1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > arm-linux 交叉编译toolchain

arm-linux 交叉编译toolchain

时间:2021-03-21 10:56:15

相关推荐

arm-linux 交叉编译toolchain

使用的平台ubuntu

cat /proc/version

Linux version 5.3.0-62-generic (buildd@lcy01-amd64-004) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #56~18.04.1-Ubuntu SMP Wed Jun 24 16:17:03 UTC

/klaus_x/article/details/79540063 可参考其他情况的编译

1.安装crosstool_NG工具

mkdir arm-linux-tools --》 建立toolchain目录

cd arm-linux-tools/

wget http://crosstool-/download/crosstool-ng/crosstool-ng-1.24.0.tar.xz --》 下载工具源码

tarxvf crosstool-ng-1.24.0.tar.xz --》 解压工具包

mkdir crosstool-build crosstool-install src --》 建立后续将要使用到的各种目录,

cd crosstool-ng-1.24.0/

./configure --prefix /home/yuhang/arm-linux-tools/crosstool-install --》 配置整个工程并进行依赖检查

sudo apt-get install help2man --》 提示缺工具help2man

./configure --prefix /home/yuhang/arm-linux-tools/crosstool-install

sudo apt-get install libtool

sudo apt-get install libtool-bin --》 提示缺libtool,需要安装2个

./configure --prefix /home/yuhang/arm-linux-tools/crosstool-install

make --》 执行makefile文件

ls

make install --》 编译成功后安装

sudo echo "PATH=$PATH:/home/yuhang/arm-linux-tools/crosstool-install/bin" >> ~/.bashrc --》 配置环境变量

source /home/yuhang/.bashrc--》 执行使其生效

ct-ng -v--》 查看安装结果,有GNU Make 版本号之类信息显示

2. 配置交叉编译链

cd samples --》 该目录下存在一些默认配置,有arm, avr32, mips, powerpc等硬件平台

arm平台有如下几个:

arm-cortex_a15-linux-gnueabihf

arm-cortexa5-linux-uclibcgnueabihf

arm-cortex_a8-linux-gnueabi

arm-cortexa9_neon-linux-gnueabihf

armeb-unknown-linux-gnueabi

armeb-unknown-linux-uclibcgnueabi

arm-multilib-linux-uclibcgnueabi

arm-unknown-linux-gnueabi

arm-unknown-linux-musleabi

arm-unknown-linux-uclibcgnueabi

arm-unknown-linux-uclibcgnueabihf

armv6-nommu-linux-uclibcgnueabi

因为是制作arm-linux交叉编译链,所以选择arm-unknown-linux-gnueabi进行配置

cp -r arm-unknown-linux-gnueabi/ ../../crosstool-build --》 将arm-unknown-linux-gnueabi文件夹复制到crosstool-build目录下

cd ../../crosstool-build/

ls

cp arm-unknown-linux-gnueabi/crosstool.config .config

ct-ng menuconfig --》 配置

step1: 设定源码包路径和交叉编译器的安装路径,在Path and misc options中,

修改2个路径, Local tarballs directory和 Prefix directory

选择save后,exit到上级配置

step2: 修改交叉编译器的架构配置

在Target options(在Path and misc options之后)中配置

需要配置点:

Architecture levelEmit assembly for cpuUse specific FPU

ct-ng build --》 配置结束后开始编译

[DEBUG] Trying '/gnu/automake/automake-1.16.1.tar.xz'

[DEBUG] ==> Executing: 'wget' '--passive-ftp' '--tries=3' '-nc' '--progress=dot:binary' '-T' '10' '-O' '/home/yuhang/arm-linux-tools/crosstool-build/.build/tarballs/automake-1.16.1.tar.xz.tmp-dl' '/gnu/automake/automake-1.16.1.tar.xz'

[ALL ] ---01-01 01:20:07-- /gnu/automake/automake-1.16.1.tar.xz

[ALL ] Resolving ()... failed: Connection timed out.

[ALL ] ---01-01 01:20:17-- /gnu/automake/automake-1.16.1.tar.xz

[ALL ] Resolving ()... 2001:470:142:5::200

[ALL ] Connecting to ()|2001:470:142:5::200|:80... failed: Network is unreachable.

[ALL ] -01-01 01:26:08 (11.4 KB/s) - Read error at byte 408311/161197451 (Success). Giving up.

[ALL ]

[DEBUG] ==> Return status 4

[DEBUG] Not at this location: "/pub/linux/kernel/v4.x/linux-4.20.8.tar.gz"

[ERROR]linux: download failed

[ERROR] >>

[ERROR] >> Build failed in step 'Retrieving needed toolchain components' tarballs'

[ERROR] >> called in step '(top-level)'

[ERROR] >>

wget /linux-kernel/v4.x/linux-4.20.8.tar.xz--》 以上问题的原因是下载这些tar包慢的问题,可使用其他快速下载链接

wget http://mirror./gnu/mpc/mpc-1.1.0.tar.gz

wget http://mirror./gnu/ncurses/ncurses-6.1.tar.gz

wget mirror./gnu/ncurses/ncurses-6.1.tar.gz

wget http://ftp./ubuntu/pool/main/l/ltrace/ltrace_0.7.3.orig.tar.bz2

yuhang@yuhang-VirtualBox:~/arm-linux-tools/crosstool-build/.build/tarballs$ ls --》 下载的tar包路径

automake-1.16.1.tar.xz linux-4.20.8.tar.gz

gmp-6.1.2.tar.xz.tmp-dl zlib-1.2.11.tar.xz

编译成功后,在tools目录下可以看到toolchain

yuhang@yuhang-VirtualBox:~/arm-linux-tools/tools/bin$ ./arm-unknown-linux-gnueabi-gcc -v

Using built-in specs.

COLLECT_GCC=./arm-unknown-linux-gnueabi-gcc

COLLECT_LTO_WRAPPER=/home/yuhang/arm-linux-tools/tools/libexec/gcc/arm-unknown-linux-gnueabi/8.3.0/lto-wrapper

Target: arm-unknown-linux-gnueabi

Configured with: /home/yuhang/arm-linux-tools/crosstool-build/.build/arm-unknown-linux-gnueabi/src/gcc/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=arm-unknown-linux-gnueabi --prefix=/home/yuhang/arm-linux-tools/tools --with-sysroot=/home/yuhang/arm-linux-tools/tools/arm-unknown-linux-gnueabi/sysroot --enable-languages=c,c++ --with-cpu=arm920t --with-float=soft --with-pkgversion='crosstool-NG 1.24.0' --disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libsanitizer --disable-libmpx --with-gmp=/home/yuhang/arm-linux-tools/crosstool-build/.build/arm-unknown-linux-gnueabi/buildtools --with-mpfr=/home/yuhang/arm-linux-tools/crosstool-build/.build/arm-unknown-linux-gnueabi/buildtools --with-mpc=/home/yuhang/arm-linux-tools/crosstool-build/.build/arm-unknown-linux-gnueabi/buildtools --with-isl=/home/yuhang/arm-linux-tools/crosstool-build/.build/arm-unknown-linux-gnueabi/buildtools --enable-lto --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --enable-threads=posix --enable-target-optspace --enable-plugin --enable-gold --disable-nls --disable-multilib --with-local-prefix=/home/yuhang/arm-linux-tools/tools/arm-unknown-linux-gnueabi/sysroot --enable-long-long

Thread model: posix

gcc version 8.3.0 (crosstool-NG 1.24.0)

yuhang@yuhang-VirtualBox:~/arm-linux-tools/tools/bin$

以上toolchain可在Host主机上安装

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。