交叉编译
来源:互联网 发布:淘宝虚拟代理挣钱吗 编辑:程序博客网 时间:2024/06/04 23:32
在android开发的时候需要经常编译第三方c库文件,可你编译的时候在电脑 运行在adnroid上,所以需要交叉编译实现。
–sysroot 的作用
如果在编译时指定了-sysroot就是为编译时指定了逻辑目录。编译过程中需要引用的库,头文件,如果要到/usr/include目录下去找的情况下,则会在前面加上逻辑目录。这里可以简单的理解我需要目标平台系统的某个文件这时候我可以同过这个地址去获取
如此处我们指定
-sysroot=/home/shell.albert/tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root
则如果在编译过程中需要找stdio.h,则会用/usr/include/目录下去找,因为我们指定了系统目录,则会到下面的路径去找。
–cross-prefix/CC
交叉工具链地址
我们需要用这个工具链条去编译我们的C代码
假设我们编译的是android平台。那么这个工具链地址如下
D:\Android\android-ndk-r9d\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin\arm-linux-androideabi-
其中上述路径的最后一个arm-linux-androideabi-
的由来如下:
在D:\Android\android-ndk-r9d\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin 目录下我们会看到如下很多工具
这么多工具你只需在调用configure(很多c库都是用这个文件去进行编译配置)写名工具前缀即可,他需要哪些编译器他会自己拼接
如我们在编译X264的时候的脚本:
#!/bin/shANDROID_NDK="/home/fmy/android-ndk-r14b"SDK_VERSION=21#ARCH=arm64ARCH=armif [ "$ARCH" = "arm64" ]then PLATFORM_PREFIX="aarch64-linux-android-" HOST="aarch64" PLATFORM_VERSION=4.9else PLATFORM_PREFIX="arm-linux-androideabi-" HOST="arm" PLATFORM_VERSION=4.9fiPREFIX=$(pwd)/android/${ARCH}SYSROOT=$ANDROID_NDK/platforms/android-${SDK_VERSION}/arch-${ARCH}TOOLCHAIN=$ANDROID_NDK/toolchains/${PLATFORM_PREFIX}${PLATFORM_VERSION}/prebuilt/linux-x86_64CROSS_PREFIX=$TOOLCHAIN/bin/${PLATFORM_PREFIX}./configure \ --prefix=$PREFIX \ --cross-prefix=$CROSS_PREFIX \ --sysroot=$SYSROOT \ --enable-static \ --enable-pic \ --disable-asm \ --host=arm-linux \make make install
我们再写编译脚本的时候写了前缀PLATFORM_PREFIX
变量为aarch64-linux-android-
,这时候我们编译器需要gcc编译器的时候它会自动拼接为 aarch64-linux-android-gcc
,这时候我们回过头来再看看NDK交叉工具连下的文件
(D:\Android\android-ndk-r9d\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin)
参考http://blog.chinaunix.net/uid-8107907-id-2034159.html
- 交叉编译
- 交叉编译
- 交叉编译
- 交叉编译
- 交叉编译
- 交叉编译
- 交叉编译
- 交叉编译
- 交叉编译
- 交叉编译
- 交叉编译
- 交叉编译
- 交叉编译
- 交叉编译
- 交叉编译
- 交叉编译
- 交叉编译
- 交叉编译
- linux后台进程的查看和终止
- HDU 1853 Cyclic Tour(二分图最优匹配:有向环覆盖)
- MyBatis 一级和二级缓存
- [Linux]--进程间通信
- FFmpeg 获取RTSP传过来的视频数据并保存成文件
- 交叉编译
- 链式队列
- 最小生成树
- 失踪的7(P1590&NOIP水题测试(2017082301))
- 一个 Yii + vue 项目(3) 解决跨域、数据库配置
- Android属性动画完全解析(上),初识属性动画的基本用法
- ASO
- 1277 字符串中的最大值 (kmp)
- HDU 6166 Senior Pan (多源多汇最短路+集合的二进制划分 17多校第九场第6题)