第18章 建立交叉编译工具链
- 格式:ppt
- 大小:107.00 KB
- 文档页数:15
交叉编译指的是在一个平台上生成另一个平台上的可执行代码,但编译平台本身不能运行该程序。
例如,在x86平台上编写程序并编译成能在ARM平台上运行的可执行代码,编译得到的程序在x86平台上不能运行,必须放到ARM平台上才能运行。
交叉编译工具链的命名一般遵循target-platform-triplet的格式,例如arm-linux-gcc表示用于生成ARM平台上Linux系统下运行的程序的GCC编译器。
交叉编译的环境配置包括安装交叉编译工具链和配置环境变量等步骤。
例如,在Linux上使用arm-linux-gcc编译器进行交叉编译时,需要将工具链的路径添加到环境变量中。
在交叉编译过程中,链接器的作用是将多个目标文件链接成一个可执行文件。
常用的链接器包括ld等。
总之,交叉编译是开发跨平台软件的重要技术之一,需要选择适合目标平台的交叉编译工具链,并正确配置环境变量和链接器等工具。
交叉编译流程
交叉编译的过程可以分为以下步骤:
1. 选择目标体系结构:确定要交叉编译的目标体系结构,例如不同的硬件平台或操作系统。
2. 安装交叉编译工具链:交叉编译工具链包括交叉编译器、链接器、调试器和库文件等,用于将源代码编译成目标平台可执行程序。
这些工具可以通过官方提供的源代码进行编译,也可以通过第三方工具包进行安装。
3. 配置交叉编译环境:确保系统能够正确地找到和使用交叉编译工具链。
这通常涉及将工具链的路径添加到环境变量中,并在构建系统中设置相应的配置参数。
4. 运行configure命令:进入源码包根目录下,运行configure命令。
该
命令有很多参数可配置,可以用configure –help来查看,在交叉编译过程中可设置–host、–target、–build这几个参数。
这些参数配置后,configure时会读取源码目录下面的文件,查找、检查设置的参数是否支持。
完成以上步骤后,就可以开始进行交叉编译了。
如果还有其他疑问,建议咨询专业编程人员以获取更全面的信息。
交叉编译基本流程交叉编译是指在一个操作系统上编译出在另一个操作系统上运行的程序的过程。
在嵌入式系统中,常常需要在一个宿主机操作系统上开发和编译出在目标嵌入式操作系统上运行的应用程序。
交叉编译的基本流程如下:1.选择交叉编译工具链:首先需要选择适合于目标平台的交叉编译工具链。
工具链是一系列的编译器、链接器、调试器和库文件的集合,用于将代码从源平台编译成目标平台可执行文件的工具。
2.配置编译环境:在主机上配置相应的编译环境,包括设置环境变量、安装交叉编译工具链和相关的依赖项等。
这些步骤可以根据具体的工具链和宿主系统进行调整。
3.编写交叉编译工具链的配置文件:交叉编译工具链通常需要一个配置文件来指定工具链的路径和使用的交叉编译器的参数等相关信息。
一般情况下,这个配置文件被称为Makefile或CMakeLists.txt。
4.编写或调整应用程序的Makefile:在项目的根目录下创建一个Makefile文件来规定应用程序的编译和链接规则。
Makefile包含了目标文件、编译选项、链接选项等信息,用于自动化编译过程。
5.交叉编译应用程序:通过在主机上运行命令来触发交叉编译过程。
命令通常会调用交叉编译工具链中的编译器来编译源代码,并生成目标平台上的可执行文件。
编译过程中可能需要指定交叉编译器的路径、头文件和库文件路径等。
6.测试和调试:将交叉编译生成的可执行文件烧录到目标平台,并在目标平台上进行测试和调试。
如果出现问题,可以通过编写并运行调试程序、打印调试信息等方式来调试并分析问题的原因。
交叉编译的好处是节省开发时间和提高效率。
使用交叉编译可以将开发工作集中在宿主机上,而不需要在嵌入式设备上进行编译,从而加快开发速度。
此外,使用交叉编译还可以充分利用宿主机的计算资源,实现更好的编译性能。
然而,交叉编译也存在一些挑战。
首先,由于主机和目标平台的硬件、操作系统和架构等不同,可能会导致一些兼容性问题和平台相关的限制。
iwpriv交叉编译
1. 交叉编译工具链,首先,我们需要准备适合目标平台的交叉编译工具链,这包括交叉编译器、交叉链接器等工具。
这些工具通常由目标平台的开发者或厂商提供,我们需要根据目标平台的架构和操作系统选择合适的工具链。
2. 构建环境设置,在进行交叉编译之前,我们需要设置好构建环境,包括环境变量、编译选项等。
这些设置需要根据目标平台的要求进行调整,以确保生成的代码能够在目标平台上正确运行。
3. 代码配置与编译,针对iwpriv工具的源代码,我们需要进行相应的配置和编译。
在进行配置时,需要指定交叉编译工具链,并根据目标平台的要求进行选项设置。
然后使用交叉编译工具链进行编译,生成适合目标平台的可执行文件。
4. 测试与调试,在生成可执行文件后,我们需要在目标平台上进行测试与调试。
这包括验证iwpriv工具在目标平台上的功能是否正常,以及进行必要的调试工作,确保生成的可执行文件能够在目标平台上稳定运行。
总之,进行iwpriv交叉编译需要我们充分了解目标平台的架构
和要求,准备好相应的交叉编译工具链,进行适当的代码配置与编译,并在目标平台上进行测试与调试。
这样才能确保生成的可执行
文件能够在目标平台上正常运行。
希望以上内容能够对你有所帮助。
随着消费类电子产品的大量开发和应用和Linux操作系统的不断健壮和强大,嵌入式系统越来越多的进入人们的生活之中,应用范围越来越广。
在裁减和定制Linux,运用于你的嵌入式系统之前,由于一般嵌入式开发系统存储大小有限,通常你都要在你的强大的pc机上建立一个用于目标机的交叉编译环境。
这是一个由编译器、连接器和解释器组成的综合开发环境。
交叉编译工具主要由binutils、gcc 和glibc 几个部分组成。
有时出于减小libc 库大小的考虑,你也可以用别的c 库来代替glibc,例如uClibc、dietlibc 和newlib。
建立一个交叉编译工具链是一个相当复杂的过程,如果你不想自己经历复杂的编译过程,网上有一些编译好的可用的交叉编译工具链可以下载。
下面我们将以建立针对arm的交叉编译开发环境为例来解说整个过程,其他的体系结构与这个相类似,只要作一些对应的改动。
我的开发环境是,宿主机i386-redhat-7.2,目标机arm。
这个过程如下1. 下载源文件、补丁和建立编译的目录2. 建立内核头文件3. 建立二进制工具(binutils)4. 建立初始编译器(bootstrap gcc)5. 建立c库(glibc)6. 建立全套编译器(full gcc)下载源文件、补丁和建立编译的目录1. 选定软件版本号选择软件版本号时,先看看glibc源代码中的INSTALL文件。
那里列举了该版本的glibc编译时所需的binutils 和gcc的版本号。
例如在glibc-2.2.3/INSTALL 文件中推荐gcc 用2.95以上,binutils 用2.10.1 以上版本。
我选的各个软件的版本是:linux-2.4.21+rmk2binutils-2.10.1gcc-2.95.3glibc-2.2.3glibc-linuxthreads-2.2.3如果你选的glibc的版本号低于2.2,你还要下载一个叫glibc-crypt 的文件,例如glibc-crypt-2.1.tar.gz。
arm-linux-gcc交叉编译工具链安装
陈伟
解压arm-linux-gcc-3.4.1.tar.bz2
#tar zxvf arm-linux-gcc-3.4.1.tar.bz2
1.解压过程需要一段时间,解压后的文件形成了usr/local/ 文件夹,
进入该文件夹,将arm文件夹拷贝到/usr/local/下
#cd usr/local/
#cp -rv arm /usr/local/
现在交叉编译程序集都在/usr/local/arm/3.4.1/bin下面了
2.修改环境变量,把交叉编译器的路径加入到PATH。
修改~/.bashrc文件,编辑.bash_profile也行
#vim ~/.bashrc
在最后加上:
export PATH=$PATH:/usr/local/arm/3.4.1/bin export PATH
也可以:
#export PATH=$PATH:/usr/local/arm/3.4.1/bin
注:(这只能在当前的终端下才是有效的!)
3.立即使新的环境变量生效,不用重启电脑:
#source /root/.bashrc
4.检查是否将路径加入到PATH:
# echo $PATH
显示的内容中有/usr/local/arm/bin,说明已经将交叉编译器的路径加入PATH。
至此,交叉编译环境安装完成。
5. 测试是否安装成功
# arm-linux-gcc -v。
交叉编译工具链的介绍
交叉编译工具链是一种由编译器、连接器和解释器组成的综合开发环境,它可以在一种平台上编译出能运行在体系结构不同的另一种平台上的程序。
例如,在PC平台(X86 CPU)上编译出能运行在以ARM为内核的CPU平
台上的程序。
编译得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行。
虽然两个平台用的都是Linux系统,但机器指令不同,所以需要交叉编译工具链进行编译。
交叉编译工具链主要由binutils、gcc和glibc三个部分组成。
有时出于减
小libc库大小的考虑,也可以用别的c库来代替glibc,例如uClibc、dietlibc和newlib。
此外,从授权上,交叉编译工具链可以分为免费授权版和付费授权版。
免费版目前有三大主流工具商提供,第一是GNU(提供源码,自行编译制作),第二是Codesourcery,第三是Linora。
构建交叉编译工具链通常有以下两种方法:
1. 分步编译和安装交叉编译工具链所需要的库和源代码,最终生成交叉编译工具链。
2. 通过Crosstool脚本工具来实现一次编译,生成交叉编译工具链。
该方法相对于第一种要简单许多,并且出错的机会也非常少,建议大多数情况下使用该方法构建交叉编译工具链。
以上内容仅供参考,如需更多信息,建议查阅关于交叉编译工具链的资料或咨询专业技术人员。
openharmony 交叉编译OpenHarmony是华为推出的全场景分布式操作系统,支持多种设备类型的应用开发。
本文将介绍如何进行OpenHarmony的交叉编译。
1. 安装交叉编译工具链为了进行OpenHarmony的交叉编译,需要安装对应的交叉编译工具链。
可以从OpenHarmony的官方网站上下载对应的工具链,或者通过包管理器进行安装。
2. 配置交叉编译环境安装完交叉编译工具链后,需要配置相应的环境变量。
具体步骤如下:a. 打开命令行终端,输入以下命令:export PATH=/path/to/cross-compiler/bin:$PATH 其中, /path/to/cross-compiler/bin 为安装交叉编译工具链的路径。
b. 输入以下命令,设置交叉编译工具链的目标系统:export CROSS_COMPILE=arm-harmonyos-linux-gnueabi- 其中,arm-harmonyos-linux-gnueabi-为对应的交叉编译工具链前缀。
3. 进行交叉编译完成以上配置后,就可以进行OpenHarmony的交叉编译了。
具体步骤如下:a. 进入要编译的项目目录。
b. 输入以下命令,进行编译:make ARCH=arm CROSS_COMPILE=arm-harmonyos-linux-gnueabi- 其中,ARCH为目标架构,这里设置为ARM架构。
c. 编译完成后,可以在输出目录下找到生成的可执行文件。
总结:通过上述步骤,可以成功进行OpenHarmony的交叉编译。
交叉编译可以在不同的平台上进行开发和测试,方便开发者进行跨平台开发。
一、实验目的本次实验旨在通过交叉编译,了解并掌握交叉编译的基本原理和操作方法,提高在嵌入式系统开发中对编译器配置和编译过程的掌握能力。
交叉编译是指在一个平台上编译生成可在另一个平台上运行的程序,这对于嵌入式系统开发尤为重要,因为嵌入式设备通常资源有限,而开发环境与运行环境可能不同。
二、实验环境1. 主机平台:Windows 102. 目标平台:Linux(假设为Raspberry Pi)3. 编译工具:GCC4. 软件包:交叉编译工具链(如交叉工具链crosstool-ng)三、实验步骤1. 安装交叉编译工具链(1)在主机上安装crosstool-ng。
```bashsudo apt-get install crosstool-ng```(2)使用crosstool-ng生成交叉编译工具链。
```bashcrosstool-NG-1.22.0/src/crosstool-NG-1.22.0/configure --toolchain-build=x86_64-build --toolchain-target=arm-linux-gnueabihf --sysroot=/path/to/raspberry-pi/rootfsmake```(3)安装交叉编译工具链。
```bashsudo make install```2. 编写测试程序(1)创建一个简单的C程序,如`hello_world.c`。
```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```3. 交叉编译程序(1)使用交叉编译器编译程序。
```basharm-linux-gnueabihf-gcc hello_world.c -o hello_world ```(2)检查编译生成的可执行文件。
```bashls -l hello_world```4. 将可执行文件传输到目标平台(1)使用SSH将可执行文件传输到目标平台。
交叉工具链的生成/uid-9185047-id-3158569.html软件平台:ubuntu 10.10主机编译器:gcc 4.5.1硬件平台:s3c24101、准备环境sudo apt-get install bison flex texinfo automake libtool cvs patch libncurses5-dev aria2 curl g++ subversion gawk cvsd expat gperf libexpat-dev注:有的没安装,第4步无法生成makefile,要先安装gperf2、下载crosstool-ng软件包crosstool-ng-1.17.0.tar.bz23、相应目录的建立sudo mkdir -p /usr/local/armsudo chmod 777 /usr/local/arm // 将arm目录权限设置为777cd /usr/local/armmkdir 4.7.2sudo mkdir -p /home/crosstoolcd /home/s3c2410/crosstoolsudo mkdir crosstool-build crosstool-install src-4.7.2(编译目录、安装目录、目标源码目录)4、安装crosstool-ngcp crosstool-ng-1.17.0.tar.bz2 /home/s3c2410/crosstool/解压crosstool-ng-1.17.0.tar.bz2,tar -xvf crosstool-ng-1.17.0.tar.bz2进入目录,进行配置:cd /home/s3c2410/crosstool/crosstool-ng-1.17.0将/home/s3c2410/crosstool/crosstool-install/lib/ct-ng.1.17.0/下的p cp到/etc/bash_completion.d配置安装目录为/home/s3c2410/crosstool/crosstool-install注:有的没安装gperf,无法生成makefile,要先安装gperfsudo ./configure --prefix=/home/crosstool/crosstool-installsudo make --编译sudo make install --安装5、配置编译的交叉编译工具链cd /home/s3c2410/crosstool/crosstool-build --进入编译目录cp/home/s3c2410/crosstool/crosstool-ng-1.17.0/samples/arm-unknown-linu x-gnueabi/* ./sudo cp crosstool.config .config --把crosstool-config --当作默认的配置文件sudo /home/crosstool/crosstool-install/bin/ct-ng menuconfig --图形界面进行配置,若该句无法执行可能是终端窗口太小弹出以下菜单,此菜单主要用于交叉编译工具链的环境配置。
linux交叉编译环境搭建步骤正文:在进行Linux交叉编译之前,我们需要先搭建好相应的交叉编译环境。
下面是搭建步骤的详细说明:步骤一:安装必要的软件包首先,我们需要安装一些必要的软件包,包括GCC、binutils、glibc 以及交叉编译工具链等。
可以通过包管理器来安装这些软件包,比如在Ubuntu上可以使用apt-get命令,CentOS上可以使用yum命令。
步骤二:下载交叉编译工具链接下来,我们需要下载相应的交叉编译工具链。
可以从官方网站上下载已经编译好的工具链,也可以通过源码自行编译得到。
下载好之后,将工具链解压到一个目录下。
步骤三:配置环境变量为了方便使用交叉编译工具链,我们需要将其添加到系统的环境变量中。
可以通过编辑.bashrc文件来实现,添加类似下面的内容:```shellexport CROSS_COMPILE=/path/to/cross-compiler/bin/arm-linux-export ARCH=arm```其中,/path/to/cross-compiler是你下载的交叉编译工具链的路径。
步骤四:测试交叉编译环境在配置好环境变量之后,我们可以通过简单的测试来验证交叉编译环境是否搭建成功。
比如,可以尝试编译一个简单的Hello World程序,并在目标平台上运行。
步骤五:编译其他软件当交叉编译环境搭建成功,并且测试通过之后,我们就可以使用这个环境来编译其他的软件了。
比如,可以使用交叉编译工具链来编译Linux内核、U-Boot引导程序、驱动程序等。
总结:搭建Linux交叉编译环境是进行嵌入式开发的基础工作之一。
在搭建好环境之后,我们可以使用交叉编译工具链来编译适配于目标平台的软件,从而实现在开发主机上进行开发和调试的目的。
台上运行的本机编译(Native Compile)工具链。
我花了大量的时间研究buildroot,基于2009.11的版本做了不少修改,使得它符合固件开发的要求。
下面列出的是一些主要的改动:∙增加了对2.6.12内核头文件的支持(编译uClibc需要)∙增加了对uClibc-0.9.28的支持∙增加了对busybox-1.15.3的支持∙增加了对gcc 3.4.4和gcc 4.4.2的支持∙增加了对nfs-utils-1.1.1的支持∙为libiconv瘦身,只保留了unicode和简体中文的支持,编译出的动态库从900多K减小到200多K。
(编译samba需要libiconv)∙让libcurl和openssl只产生静态库。
(编译transmission要用到)1. 准备编译环境(适用于Ubuntu或Debian。
我用的是Ubuntu 9.10)安装编译所需软件包:$ sudo apt-get install build-essential libncurses5-dev bison flex texinfo zlib1g-dev gettext libssl-dev autoconfbuildroot用wget下载软件包源码,因此需要安装wget:$ sudo apt-get install wgetUbuntu默认的shell是dash,它跟buildroot的脚本有些不兼容。
用下面的命令切换到bash:$ sudo dpkg-reconfigure dash2. 下载buildroot-2009.11,放在HOME目录下,当然也可以放在其它目录。
$ cd$ wget /downloads/buildroot-2009.11.tar.bz2$ tar jxf buildroot-2009.11.tar.bz23. 打补丁。
我把我的所有修改都放在一个补丁里:buildroot-2009.11.patch.zip$ cd buildroot-2009.11$ patch -p1 < ../buildroot-2009.11.patch4. 配置buildroot。
ethtool交叉编译介绍ethtool是一个用于配置和显示以太网接口参数的命令行工具。
它可以查询网卡的状态、配置速度和双工模式、设置WOL(远程唤醒)等功能。
交叉编译是指在一台主机上为另一台主机生成可执行文件或库文件的过程。
本文将介绍如何进行ethtool的交叉编译,以便在目标平台上使用。
准备工作在开始交叉编译之前,需要准备以下工具和环境: 1. 主机环境:Ubuntu 18.04 2. 目标平台:ARM架构的嵌入式设备 3. 交叉编译工具链:arm-linux-gnueabi 4. ethtool源代码:步骤一:安装交叉编译工具链在主机上安装ARM架构的交叉编译工具链,可以使用apt-get命令进行安装:sudo apt-get install gcc-arm-linux-gnueabi步骤二:下载ethtool源代码在主机上下载ethtool的源代码,并解压缩到指定目录:wgettar -zxvf ethtool-5.13.tar.gz步骤三:配置交叉编译环境进入ethtool源代码所在目录,并执行以下命令:cd ethtool-5.13在源代码目录下创建一个新的配置文件:touch cross-compile.config编辑配置文件,指定交叉编译工具链的路径:echo "CC=arm-linux-gnueabi-gcc" > cross-compile.config步骤四:交叉编译ethtool执行以下命令进行交叉编译:make -f Makefile.cross编译完成后,在源代码目录下生成可执行文件ethtool:ls -al ethtool步骤五:部署到目标平台将编译好的ethtool可执行文件拷贝到目标平台上:scp ethtool user@target:/path/to/ethtool结论通过以上步骤,我们成功进行了ethtool的交叉编译,并在目标平台上部署了可执行文件。
交叉编译是一个在目标系统上生成可执行文件的过程,而不是在开发环境的主机系统上。
为了交叉编译`libelf`,你需要遵循以下步骤:1. **获取源代码**:首先,你需要获取`libelf` 的源代码。
这通常可以通过从其官方网站或使用`git` 命令来完成。
2. **创建交叉编译工具链**:交叉编译工具链是包含一组用于目标系统的工具的集合,如编译器、汇编器和链接器。
你需要为你的目标系统选择一个交叉编译工具链。
例如,对于ARM 架构,你可能会选择`arm-linux-gnueabihf-gcc`。
3. **配置编译选项**:你需要修改编译脚本或配置文件,以指定使用交叉编译工具链,并设置其他任何必要的选项。
这通常涉及指定`CC`、`AR`、`RANLIB` 等环境变量。
4. **编译**:使用交叉编译工具链进行编译。
这通常涉及运行类似`make` 或`configure` 的命令。
5. **安装**:编译完成后,你可能需要将生成的库和头文件安装到适当的位置,以便在目标系统上使用。
6. **测试**:在目标系统上测试生成的库以确保其正常工作。
下面是一个简化的示例,展示了如何在配置脚本中指定交叉编译工具链:```sh./configure CC=arm-linux-gnueabihf-gccAR=arm-linux-gnueabihf-ar RANLIB=arm-linux-gnueabihf-ranlib makemake install```请注意,具体的命令可能会根据你的系统和`libelf` 的版本而有所不同。
始终参考`libelf` 的官方文档以获取最新和最准确的信息。
交叉编译工具链使用交叉编译工具链是一个重要的工具,可以在一台计算机上开发软件,然后将其编译为可以在其他计算机上运行的可执行文件。
这是非常有用的,因为有时我们需要将代码编译到不同的平台上,例如将Windows下的代码编译为Linux下的。
使用交叉编译工具链可以大大减少开发人员所需的硬件资源和时间成本。
以下是关于交叉编译工具链的一些详细信息:1. 什么是交叉编译工具链?交叉编译工具链是用于编译能够在其他操作系统或体系结构上运行的代码的工具。
通常情况下,交叉编译器可以在一个操作系统上运行,在另一个操作系统上生成可执行文件。
而且,交叉编译工具链中包含的工具一般包括编译器、链接器和转换器。
这些工具可以将代码从一种架构编译为另一种架构,从而在不同的系统上运行。
2. 为什么要使用交叉编译工具链?通常情况下,开发人员可能需要在不同的操作系统或体系结构上运行代码。
例如,开发人员可能需要在Windows下开发代码,但需要在Linux上运行该代码。
在这种情况下,使用交叉编译工具链是非常有用的,因为它可以将代码从Windows编译为Linux可执行文件,实现跨平台运行。
使用交叉编译工具链还可以节省开发人员的硬件资源和时间成本,因为他们不需要在多个系统上安装和配置编译器等工具。
此外,交叉编译工具链还可以提高代码的可移植性,因为它可以使代码在多个操作系统和体系结构上运行。
3. 如何使用交叉编译工具链?使用交叉编译工具链需要掌握该工具的基本用法和配置方法。
通常情况下,你需要在你的开发计算机上安装交叉编译器,然后将其配置为使用正确的目标架构和操作系统。
以下是一些关于使用交叉编译工具链的提示:a. 确定目标平台:在使用交叉编译工具链之前,必须确定目标平台的体系结构和操作系统。
这将有助于正确配置交叉编译工具链。
b. 安装交叉编译器:在你的开发计算机上安装正确的交叉编译器。
你可以从交叉编译器的官方网站或其他可靠的源中下载安装程序。
c. 配置交叉编译器:在配置交叉编译器时,必须指定正确的目标架构和操作系统。
安装交叉编译工具链过程与问题处理[EXTRA] ================================================================= [EXTRA] Dumping internal crosstool-NG configuration[EXTRA] Building a toolchain for:[EXTRA] build = i686-pc-linux-gnu[EXTRA] host = i686-pc-linux-gnu[EXTRA] target = arm-unknown-linux-gnueabi[EXTRA] Dumping internal crosstool-NG configuration: done in 0.25s (at 00:09) [INFO ] ================================================================= [INFO ] Retrieving needed toolchain components' tarballs[INFO ] Retrieving needed toolchain components' tarballs: done in 1.07s (at 00:10) [INFO ] ================================================================= [INFO ] Extracting and patching toolchain components[INFO ] Extracting and patching toolchain components: done in 15.11s (at 00:25) [INFO ] ================================================================= [INFO ] Installing GMP for host[EXTRA] Configuring GMP[EXTRA] Building GMP[EXTRA] Installing GMP[INFO ] Installing GMP for host: done in 124.00s (at 02:29)[INFO ] ================================================================= [INFO ] Installing MPFR for host[EXTRA] Configuring MPFR[EXTRA] Building MPFR[INFO ] Installing MPFR for host: done in 41.19s (at 03:10)[INFO ] ================================================================= [INFO ] Installing PPL for host[EXTRA] Configuring PPL[EXTRA] Building PPL[EXTRA] Installing PPL[INFO ] Installing PPL for host: done in 380.95s (at 09:31)[INFO ] ================================================================= [INFO ] Installing CLooG/PPL for host[EXTRA] Configuring CLooG/ppl[EXTRA] Building CLooG/ppl[EXTRA] Installing CLooG/ppl[INFO ] Installing CLooG/PPL for host: done in 13.11s (at 09:44)[INFO ] ================================================================= [INFO ] Installing MPC for host[EXTRA] Configuring MPC[EXTRA] Building MPC[EXTRA] Installing MPC[INFO ] Installing MPC for host: done in 14.90s (at 09:59)[INFO ] ================================================================= [INFO ] Installing binutils for host[EXTRA] Configuring binutils[EXTRA] Building binutils[INFO ] Installing binutils for host: done in 105.80s (at 11:45)[INFO ] ================================================================= [INFO ] Installing pass-1 core C compiler[EXTRA] Configuring core C compiler[EXTRA] Building core C compiler[EXTRA] Installing core C compiler[INFO ] Installing pass-1 core C compiler: done in 300.28s (at 16:46)[INFO ] ================================================================= [INFO ] Installing kernel headers[EXTRA] Installing kernel headers[EXTRA] Checking installed headers[INFO ] Installing kernel headers: done in 9.34s (at 16:55)[INFO ] ================================================================= [INFO ] Installing C library headers & start files[EXTRA] Configuring C library[EXTRA] Installing C library headers[EXTRA] Installing C library start files[INFO ] Installing C library headers & start files: done in 45.88s (at 17:41)[INFO ] ================================================================= [INFO ] Installing pass-2 core C compiler[EXTRA] Configuring core C compiler[EXTRA] Building core C compiler[EXTRA] Installing core C compiler[INFO ] Installing pass-2 core C compiler: done in 622.27s (at 28:03)[INFO ] ================================================================= [INFO ] Installing C library[EXTRA] Configuring C library[EXTRA] Building C library[EXTRA] Installing C library[INFO ] Installing C library: done in 977.42s (at 44:21)[INFO ] ================================================================= [INFO ] Installing final compiler[EXTRA] Configuring final compiler[EXTRA] Building final compiler[EXTRA] Installing final compiler[INFO ] Installing final compiler: done in 822.18s (at 58:03)[INFO ] ================================================================= [INFO ] Installing libelf for the target[EXTRA] Configuring libelf[EXTRA] Building libelf[EXTRA] Installing libelf[INFO ] Installing libelf for the target: done in 10.37s (at 58:13)[INFO ] ================================================================= [INFO ] Installing binutils for target[EXTRA] Configuring binutils for target[EXTRA] Building binutils' libraries (libiberty bfd) for target[EXTRA] Installing binutils' libraries (libiberty bfd) for target[INFO ] Installing binutils for target: done in 147.45s (at 60:41)[INFO ] ================================================================= [INFO ] Installing dmalloc[EXTRA] Configuring dmalloc[EXTRA] Building dmalloc[EXTRA] Installing dmalloc[INFO ] Installing dmalloc: done in 17.46s (at 60:58)[INFO ] ================================================================= [INFO ] Installing D.U.M.A.[EXTRA] Copying sources[EXTRA] Building libraries 'libduma.a libduma.so.0.0.0'[EXTRA] Installing libraries 'libduma.a libduma.so.0.0.0'[EXTRA] Installing shared library link[EXTRA] Installing wrapper script[INFO ] Installing D.U.M.A.: done in 3.34s (at 61:02)[INFO ] ================================================================= [INFO ] Installing cross-gdb[EXTRA] Configuring cross-gdb[EXTRA] Building cross-gdb[ERROR] configure: error: expat is missing or unusable[ERROR] make[2]: *** [configure-gdb] Error 1[ERROR] make[1]: *** [all] Error 2[ERROR][ERROR] >>[ERROR] >> Build failed in step 'Installing cross-gdb'[ERROR] >> called in step '(top-level)'[ERROR] >>[ERROR] >> Error happened in: CT_DoExecLog[scripts/functions@257][ERROR] >> called from: do_debug_gdb_build[scripts/build/debug/300-gdb.sh@177] [ERROR] >> called from: do_debug[scripts/build/debug.sh@35][ERROR] >> called from: main[scripts/crosstool-NG.sh@612][ERROR] >>[ERROR] >> For more info on this error, look at the file: 'build.log'[ERROR] >> There is a list of known issues, some with workarounds, in:[ERROR] >> '/home/sdust/crosstool/crosstool-install/share/doc/crosstool-ng/ct-ng.1.17.0/B - Known issues.txt'[ERROR][ERROR] (elapsed: 62:51.22)[62:52] / make: *** [build] 错误2查看上述错误,是因为expat文件的问题,由于事先已经下载的相关文件存放在资源目录中,所以,应该是下载文件问题。