高通linux系统交叉编译,【Linux】第三章 移植开源库

在开始移植前,默认已经下载好库文件并解压好

移植三部曲:

./configuer : 配置参数

make : 编译

make install : 安装

configure 配置参数说名

1 说明

在linux 中,经常需要用到交叉编译,在ubuntu系统中,交叉编译可以运行在arm平台上的bin文件。对于大部分代码,

都有configure文件,让开发者进行配置,配置完毕之后自动生成makefile,然后进行编译。本文旨在说明configure中

常用的一些参数。

2 开发环境

软件环境: ubuntu 操作系统

编译工具链:arm-openwrt-linux硬件平台:高通ipq

3 configure参数说明

3.1 查看configure 配置选项

在configure目录下,运行 ./configure --help 命令,可以查看到configure的配置参数一共有哪些。

3.2 参数说明

3.2.1 build 参数 : 执行代码编译的主机,可以默认不写

--build=BUILD configure for building on BUILD [guessed]

3.2.2 host 参数 : 指定软件运行的系统平台

--host=HOST cross-compile to build programs to run on HOST [BUILD]

例如 arm-openwrt-linux 这个平台时:

--host=arm-openwrt-linux

3.2.3 target 参数 : 建立交叉编译环境,一般可不填,如果填写,和 host 保持一致

--target=TARGET configure for building compilers for TARGET [HOST]

3.2.4 CC 参数 : 交叉编译器命令

CC C compiler command

举例:

CC=arm-openwrt-linux-muslgnueabi-gcc

3.2.5 prefix 参数 :指定编译 make install 后,文件安装的目录

--program-prefix=PREFIX prepend PREFIX to installed program names

注:不指定prefix,则可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc。其他的资源文件放在/usr/local/share

--prefix=/home/tmp/test

3.3 编译参数示例

./configure --target=arm-openwrt-linux --host=arm-openwrt-linux --build=x86_64-linux-gnu --prefix=/usr

或者

./configure --host=arm-openwrt-linux --build=x86_64-linux-gnu

或者

./configure --host=arm-openwrt-linux

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sogou_toolchain.tar.gz 全志R16平台的tinav2.1平台的编译工具 UNICODE全志tinav2.1的编译工具的设置.txt 我的编译方法: 1、复制内核工具到家目录R:\sogou\toolchain rootroot@rootroot-E400:~$ rootroot@rootroot-E400:~$ cd wyb/r16_tinav2.1/ rootroot@rootroot-E400:~/wyb/r16_tinav2.1$ cd prebuilt/gcc/linux-x86/arm/toolchain-sunxi/ rootroot@rootroot-E400:~/wyb/r16_tinav2.1/prebuilt/gcc/linux-x86/arm/toolchain-sunxi$ cp toolchain/ ~/sogou/ -r rootroot@rootroot-E400:~/wyb/r16_tinav2.1/prebuilt/gcc/linux-x86/arm/toolchain-sunxi$ tar zcvf toolchain.tar.gz toolchain/ rootroot@rootroot-E400:~/wyb/r16_tinav2.1/prebuilt/gcc/linux-x86/arm/toolchain-sunxi$ cp toolchain.tar.gz ~/sogou/ rootroot@rootroot-E400:~/wyb/r16_tinav2.1/prebuilt/gcc/linux-x86/arm/toolchain-sunxi$ cd ~/sogou/ rootroot@rootroot-E400:~/sogou$ tar zxvf toolchain.tar.gz 2、添加环境变量,在/etc/profile最后一行添加如下一句(需要root权限): export PATH="$PATH:/home/rootroot/sogou/toolchain/bin" export STAGING_DIR="$PATH:/home/rootroot/sogou/toolchain" .bashrc的最后输入: export PATH="$PATH:/home/rootroot/sogou/toolchain/bin" export STAGING_DIR="$PATH:/home/rootroot/sogou/toolchain" 3、输入arm-openwrt-linux-gcc -v检查是否可用(确认环境变量是否配置正确) rootroot@rootroot-E400:~/sogou$ arm-openwrt-linux-gcc -v Reading specs from /home/rootroot/sogou/toolchain/bin/../lib/gcc/arm-openwrt-linux-muslgnueabi/5.2.0/specs COLLECT_GCC=arm-openwrt-linux-muslgnueabi-gcc.bin COLLECT_LTO_WRAPPER=/home/rootroot/sogou/toolchain/bin/../libexec/gcc/arm-openwrt-linux-muslgnueabi/5.2.0/lto-wrapper Target: arm-openwrt-linux-muslgnueabi Configured with: /home/caiyongheng/tina_test/out/azalea-perf3/compile_dir/toolchain/gcc-5.2.0/configure --with-bugurl=https://dev.openwrt.org/ --with-pkgversion='OpenWrt GCC 5.2.0 70-1-1' --prefix=/home/caiyongheng/tina_test/out/azalea-perf3/staging_dir/toolchain --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=arm-openwrt-linux-muslgnueabi --with-gnu-ld --enable-target-optspace --disable-libgomp --disable-libmudflap --disable-multilib --disable-nls --without-isl --without-cloog --with-host-libstdcxx=-lstdc++ --with-gmp=/home/caiyongheng/tina_test/out/host --with-mpfr=/home/caiyongheng/tina_test/out/host --with-mpc=/home/caiyongheng/tina_test/out/host --disable-decimal-float --with-diagnostics-color=auto-if-env --disable-libssp --enable-__cxa_atexit --with-arch=armv7-a --with-float=hard --with-headers=/home/caiyongheng/tina_test/out/azalea-perf3/staging_dir/toolchain/include --disable-libsanitizer --enable-languages=c,c++ --enable-shared --enable-threads --with-slibdir=/home/caiyongheng/tina_test/out/azalea-perf3/staging_dir/toolchain/lib --enable-lto --with-libelf=/home/caiyongheng/tina_test/out/host Thread model: posix gcc version 5.2.0 (OpenWrt GCC 5.2.0 70-1-1) rootroot@rootroot-E400:~/sogou$ 4、创建工程目录record,在其中创建include、obj、lib、doc目录 5、所需的alsa头文件在R:\wyb\r16_tinav2.1\package\allwinner\liballwinner\LIBRARY\EXTERNAL\include\alsa,将其复制到工程目录中的include中 rootroot@rootroot-E400:~$ cd wyb/r16_tinav2.1/ rootroot@rootroot-E400:~/wyb/r16_tinav2.1$ cd package/allwinner/liballwinner/LIBRARY/EXTERNAL/include/ rootroot@rootroot-E400:~/wyb/r16_tinav2.1/package/allwinner/liballwinner/LIBRARY/EXTERNAL/include$ cp alsa/ ~/sogou/record/include/ -r rootroot@rootroot-E400:~/wyb/r16_tinav2.1/package/allwinner/liballwinner/LIBRARY/EXTERNAL/include$ 6、所需的so文件是R:\wyb\r16_tinav2.1\out\astar-parrot\staging_dir\target\usr\lib\libasound.so.2.0.0,将其复制到lib中,并改名为libasound.so 7、编辑record.c和Makefile Makefile文件的内容: CC=arm-openwrt-linux-g++ #CC=g++ DIR_OBJ=./obj DIR_INCLUDE=./include OBJ=record.o record:$(OBJ) $(CC) $(DIR_OBJ)/* -L./lib -lasound -o $@ %.o:%.c $(CC) -c $< -I$(DIR_INCLUDE) -o $(DIR_OBJ)/$@ clean: rm -f record $(DIR_OBJ)/* 8、 make clean make rootroot@rootroot-E400:~/sogou/record$ make clean rm -f record ./obj/* rootroot@rootroot-E400:~/sogou/record$ make arm-openwrt-linux-g++ -c record.c -I./include -o ./obj/record.o In file included from ./include/alsa/asoundlib.h:32:0, from record.c:13: /home/rootroot/sogou/toolchain/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp] #warning redirecting incorrect #include <sys/poll.h> to <poll.h> ^ In file included from ./include/alsa/ctl_macros.h:13:0, from ./include/alsa/control.h:54, from ./include/alsa/asoundlib.h:47, from record.c:13: /home/rootroot/sogou/toolchain/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp] #warning redirecting incorrect #include <sys/poll.h> to <poll.h> ^ In file included from ./include/alsa/pcm_macros.h:13:0, from ./include/alsa/pcm.h:116, from ./include/alsa/asoundlib.h:48, from record.c:13: /home/rootroot/sogou/toolchain/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp] #warning redirecting incorrect #include <sys/poll.h> to <poll.h> ^ In file included from ./include/alsa/hctl_macros.h:13:0, from ./include/alsa/hcontrol.h:36, from ./include/alsa/mixer.h:25, from ./include/alsa/asoundlib.h:49, from record.c:13: /home/rootroot/sogou/toolchain/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp] #warning redirecting incorrect #include <sys/poll.h> to <poll.h> ^ In file included from ./include/alsa/mixer_macros.h:13:0, from ./include/alsa/mixer.h:72, from ./include/alsa/asoundlib.h:49, from record.c:13: /home/rootroot/sogou/toolchain/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp] #warning redirecting incorrect #include <sys/poll.h> to <poll.h> ^ In file included from record.c:17:0: /home/rootroot/sogou/toolchain/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp] #warning redirecting incorrect #include <sys/poll.h> to <poll.h> ^ arm-openwrt-linux-g++ ./obj/* -L./lib -lasound -o record rootroot@rootroot-E400:~/sogou/record$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值