编译期会出现错误提示有哪些_自制交叉编译工具链

借鉴于其他人:原文链接

使用crosstool-ng来制作编译工具链

安装crosstool-ng:

创建目录文件

$ mkdir arm-linux-tools  
$ cd arm-linux-tools  

下载crosstool-ng源码

$ wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.20.0.tar.bz2  

注:现在有更多版本,此处学习使用,照搬使用。

解压源码

$ tar xvjf crosstool-ng-1.20.0.tar.bz2  

配置并进行依赖检测

依赖安装:

1)gperf

2)bison

3)flex

4)texinfo

5)gawk

6)libtool

7)automake

8)libncurses5-dev

9)g++

原文命令:

$ cd crosstool-ng-1.20.0  
$ ./configure --prefix /home/eric/arm-linux-tools/crosstool-install/ 

注:此处将会出现libtool找不到错误,修改命令添加路径参数

修改命令:

$ cd crosstool-ng-1.20.0  
$ ./configure --prefix /home/x/arm-linux-tools/crosstool-install/ --with-libtool=usr/share/libtool

编译并安装

$ make  

注:如果编译时出现错误

32eed4f3a0455d6f117ca8fc0801365d.png

直接修改kconfig/zconf.hash.c +163 源码中的size_t为unsigned int

$ make install

配置环境变量

$ export PATH=$PATH:/home/eric/arm-linux-tools/crosstool-install/bin/  

检查是否安装成功

$ ct-ng -v  

配置交叉编译工具链:

将arm-unknown-linux-gnueabi文件夹复制到crosstool-build目录下

$ cd samples  
$ cp -r arm-unknown-linux-gnueabi/ ../../crosstool-build/ 

将默认配置文件拷贝到crosstool-build目录下并改名为.config

    $ cd ~/arm-linux-tools/crosstool-build  
    $ cp arm-unknown-linux-gnueabi/crosstool.config .config  

执行ct-ng menuconfig进入配置界面进行配置

$ ct-ng menuconfig  

1)设定源码包路径和交叉编译器的安装路径

1)源码包路径:设置Paths and misc options下的Local tarballs directory为/home/eric/arm-linux-tools/src

2)交叉编译器的安装路径:设置Paths and misc options下的Prefix directory为/home/eric/arm-linux-tools/x-tools/${CT_TARGET}

(2)修改交叉编译器针对的架构

1)设置Target options下的Architecture level为armv4t

2)设置Target options下的Emit assembly for CPU为arm9tdmi

3)设置Target options下的Tune for CPU为arm920t

(3)设置编译时的并行进程数

1)设置Paths and misc options下的Number of parallel jobs为4

这个数值不宜过大,应该为CPU核心数量的两倍。

(4)设置编译器前缀

1)设置Toolchain options下的Tuple's vendor string为S3C2440,这样生成的编译器的前缀就是arm-S3C2440-linux-gnueabi-

安装termcap

    $ cd /tmp  
    $ wget ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz  
    $ tar xvzf termcap-1.3.1.tar.gz  
    $ cd termcap-1.3.1  
    $ ./configure --prefix=/usr  
    $ make  
    $ make install  

编译

在crosstool-build目录下执行以下命令进行编译

 $ ct-ng build.4  

整个编译过程时间比较长,crosstool-ng会自动下载相应的包和内核文件,然后解压、配置、编译、链接,但有个别包在自动下载过程中会出错,例如duma_2_5_15和expat-2.1.0,需要手动下载这两个包放入Local tarballs directory指定的目录(这里为/home/eric/arm-linux-tools/src),然后再重新执行编译即可。

注:个人在安装中,发现10多个包都没法下载,全部都是手动下载的,下载的包只要是常见的压缩包应该都没有问题。推荐墙外下载。

7bc9cbde28e689b0c008748e7d895910.png
需要下载对应的包(strace-4.8)的提示

c123c1be073f0353e593a15c20b11d28.png
作者自己手动下载的包

编译过程中,在安装到cross-gdb时,出现configure: error: expat is missing or unusable的错误,安装libexpat1-dev即可。

编译过程中,出现g++: Internal error: Killed (program cc1plus)的错误,尝试着将可用内存加大。

-----------------------------------------------------------------------------------------------

在进行ct-ng build时,网上教程都是成功的,然而作者总是出现安装binutils错误:

22485912746b34c171189d65ac18c3eb.png

参照Google和百度都无法成功通过build,耗时3天,暂时放弃。

-----------------------------------------------------------------------------------------------

配置环境变量

    $ echo "PATH=$PATH:/home/eric/arm-linux-tools/x-tools/arm-S3C2440-linux-gnueabi/bin" >> ~/.bashrc  
    $ source ~/.bashrc  

确认安装完成

$ arm-S3C2440-linux-gnueabi-gcc -v  

编译成功后的交叉编译器路径

(1)编译器路径:/home/eric/arm-linux-tools/x-tools/arm-S3C2440-linux-gnueabi/bin

(2)库文件路径:/home/eric/arm-linux-tools/x-tools/arm-S3C2440-linux-gnueabi/arm-S3C2440-linux-gnueabi/lib

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值