1.用ndk生成可执行文件的方式和用ndk生成动态库方式差不多,只是Android.mk中最有一句要改成 include $(BUILD_EXECUTABLE);但是因为用ndk就不能直接使用第三方原工程代码中写好的makefile文件,所以如果第三方的工程很庞大的话,还是百度下怎么用ndk链接到makefile文件下吧。
2. 用交叉编译器。用交叉编译的好处就是可以直接使用第三方开源库中已经写好的makefile文件生成最后的可执行文件,只需要把环境搭建好就ok了。
我是这样弄的,
-----------------------隐藏内容------------------
环境 linux 服务器
1.下载linux for arm的交叉编译器,我用的这个 arm-linux-gcc-4.4.3.tar.gz,网上资源很多,
2.交叉编译器不需要安装,只要解压就可以用了。解压命令(后面是解压到什么地方): tar -zxvf arm-linux-gcc-4.4.3.tar.gz /usr/local/arm
3.下载所需要的第三方开源库源代码,我这里用的是ffmpg ,开源的媒体库,解压到当前目录就好了 tar -jxvf ffmpeg.0.10.tar.bz2
4. 一般linux的工程都会有一个configure文件,为配置工程的文件,在这里指定交叉编译器的路径,在ffmpg目录下
5. 配置ffmpeg编译方式
./configure --prefix=/home/wangsc/android-ffmpeg/ --cross-prefix=/usr/local/arm/bin/arm-none-linux-gnueabi- --target-os=linux --arch=armv7 --extra-cflags=-static --extra-ldflags=-static
6. make
7 .make install
8.到目录/home/wangsc/android-ffmpeg/bin/ 下就是生成的ffmpeg可执行文件了。
9.用linux的 file 命令查看生成的文件,红色字体是关键,android下的可执行文件只能用static,不能用shared
ffmpeg: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.16, stripped