交叉编译

嵌入式的开发,如目前遇到的将c语言编译成的cgi放入Android系统来进行开发,这里涉及的需要编译工具也就是我们交叉编译工作,我们在Linux上编译C,使用的是gcc编译工具,编译生成的O文件才能够在Linux系统上运用,那么这个gcc是Linux系统的编译工具,那么我们想让C在Android系统上运用,需要使用Android 自己的gcc.

这个工具也是就Android的NDK,目前有两种方式获取这个NDK

1 . 在Android源码中找到NDK:

    在ndk\build\tools目录下执行make-standalone-toochain.sh脚本即可

2. 在官网上下载NDK, 这个方法我没有试过,效果应该是一样的

参考博客https://www.cnblogs.com/xieyajie/p/4727706.html

一、下载 Android NDK

Android NDK官方下载页:http://developer.android.com/tools/sdk/ndk/index.html

如果需要旧版本的,比如10b版本,64位linux上使用的,可以直接敲 http://dl.google.com/android/ndk/android-ndk32-r10b-linux-x86_64.tar.bz2

>> “ndk32”: 32位target版,想要64位的换成“ndk64”;

>>"r10b": NDK的版本;

>> "linux-x86_64": 64位linux上使用,如果想要32位linux的,换成“linux-x84”; 如果想要64位mac的,换成“darwin-x86_64”。

下载下来之后解压,然后将ndk-build命令加入到环境变量中

 

1 $nano ~/.bashrc
2 #在文件的末尾加上: export PATH=$PATH:/home/xyj/android-ndk32-r10b
3 $source .bashrc

 

  

 二、交叉编译工具

step1、下载(我尝试使用这个方法,发现命令不对,应该每个版本的make-standalone-toolchain.sh所带的参数是不一样的)

交叉编译
1 $cd /home/xyj/android-ndk-r10b
2 $./build/tools/make-standalone-toolchain.sh --system=linux-x86_64 --toolchain=arm-linux-androideabi-4.8
3 #回车之后输入以下内容就是成功了
4 Copying prebuilt binaries...  
5 Copying sysroot headers and libraries...  
6 Copying libstdc++ headers and libraries...  
7 Creating package file: /tmp/ndk-xyj/arm-linux-androideabi-4.8.tar.bz2  
8 Cleaning up...  
9 Done.  
交叉编译

step2、解压到你想要的路径$AAA下,将工具链加入到环境变量中:

 

$nano ~/.bashrc
#在文件的末尾加上: export PATH=$PATH:$AAA/arm-linux-androideabi-4.8/bin
$source .bashrc

 

step3. 检测是否安装成功

way1: 

$arm #双tab

显示以下内容

交叉编译

way2:

$arm-linux-androideabi-gcc -v 
#能显示正确信息

$arm-linux-androideabi-g++ -v 
#能显示正确信息