ورود

View Full Version : برنامه نویسی برای ARM (آندروید)



mohammadhosin
پنج شنبه 06 فروردین 1394, 21:06 عصر
سلام به همه دوستان
قصد داریم در این تاپیک نحوه کامپایل نرم افزار هایی که بیشتر به زبان C++ نوشته شدن برای آندروید کامپایل کنیم

لطفا دوستانی که در این ضمینه تجربه ای دارند دریغ ننمایند

mohammadhosin
پنج شنبه 06 فروردین 1394, 21:46 عصر
libpcap & Tcpdump :

برای شروع میخوایم libpcap , Tcpdump رو برای آندروید کامپایل کنیم
سیستم عامل من Ubuntu 14 هست و از قبل arm-linux-gnueabi-gcc رو نصب کردم

ابتدا از لینک http://www.tcpdump.org/ سورس libpcap , tcpdump رو دانلود کرده و اکسترکت میکنیم



tar zxvf libpcap-1.6.1.tar.gz
حالا باید کانفیگ اونو برای ARM آماده کنیم

./configure --host=arm-linux-gnueabi --with-pcap=linux
checking build system type... x86_64-unknown-linux-gnu
checking host system type... arm-unknown-linux-gnu
checking target system type... arm-unknown-linux-gnu
checking for arm-linux-gcc... arm-linux-gnueabi-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... yes
..........

حالا با Make فایل libpcap.a میسازیم


$make
arm-linux-gnueabi-gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-linux.c
arm-linux-gnueabi-gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-usb-linux.c
arm-linux-gnueabi-gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-can-linux.c
..........

حالا با این کد میتونیم از صحت کامپایل برای ARM مطمئن بشیم


$ /usr/bin/arm-linux-gnueabi-readelf -h ./libpcap.a | grep -i 'class\|machine'
Class: ELF32
Machine: ARM

حالا باید Tcpdump رو کامپایل کنیم



$ tar zxvf tcpdump-4.6.1.tar.gz

$ cd tcpdump-4.6.1


چون تو آندروید shared libraries نصب نیست باید بوسیله کد های زیر تو یک فایل کل برنامه کامپایل بشه


$ export CFLAGS=-static

$ export CPPFLAGS=-static

$ export LDFLAGS=-static
حالا کانفیگ برای ARM :

[CODE]
./configure --host=arm-linux-gnueabi

$ make
اینم برای تست فایل اجرایی


$ file tcpdump
tcpdump: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 2.6.18, BuildID[sha1]=5a7f6e82ddc0c7530856dd8f5684ccea0dbe9d12, not stripped

اینم برای کاهش حجم فایل کامپایل شده :


arm-linux-gnueabi-strip tcpdump

حالا برای اجرا باید در مسیر /system/xbin تو گوشیتون بریزید و از خط فرمان اجرا کنید

موفق باشید

mohammadhosin
شنبه 08 فروردین 1394, 11:46 صبح
اینم لینک کامپابل خودم
http://www.mediafire.com/view/bkseb06ogtcn14a/tcpdump