嵌入式linux交叉编译工具链
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
● build-tools 用来存放下载的binutils、gcc、glibc等源代码和用来编译这些源代码的目录; ● kernel 用来存放内核源代码; ● tools 用来存放编译好的交叉编译工具和库文件
分步构建交叉编译工具链 3、建立环境变量
二、交叉编译工具链的制作方法
该步骤的目的是为了方便重复输入路径,因为重复操作每件相同的事情总会让人觉得很麻烦。声明以下 环境变量的目的是在之后编译工具库的时候会用到,很方便输入,尤其是可以降低输错路径的风险。
二、交叉编译工具链的制作方法
分步构建交叉编译工具链
1、下载所需的源代码包
安装包
下载地址
linux-2.4.20.tar.gz binutils-2.19.tar.bz2
gcc-3.3.6.tar.gz
安装包
下载地址
glibc-2.3.2.tar.gz glibc-linuxthreads-2.3.2.tar.gz
2、交叉编译工Βιβλιοθήκη Baidu链
一、交叉工编译工具链的简介 ——构建交叉编译工具链
交叉编译工具链主要包括针对目标系统的编译器 gcc、目标系统的二进制工具binutils、目标 系统的标准c库glibc和目标系统的 Linux 内核头文件。
一、交叉工编译工具链的简介 ——构建交叉编译工具链
• 构建交叉编译器的第一个步骤就是确定目标平台。在GNU系统中,每个目标平台都有一个明确的格式 ,这些信息用于在构建过程中识别要使用的不同工具的正确版本。因此,当在一个特定目标机下运行 GCC时,GCC便在目录路径中查找包含该目标规范的应用程序路径。GNU的目标规范格式为CPUPLATFORM-OS。例如x86/i386 目标机名为i686-pc-linux-gnu。本章的目的是讲述建立基于ARM平台的 交叉工具链,所以目标平台名为arm-linux-gnu。
# export PRJROOT=/home/jiabing/armlinux # export TARGET=arm-linux # export PREFIX=$PRJROOT/tools # export TARGET_PREFIX=$PREFIX/$TARGET # export PATH=$PREFIX/bin:$PATH 注意,用export声明的变量是临时的变量,也就是当注销或更换了控制台,这些环境变量就消失了,如 果还需要使用这些环境变量就必须重复export操作,所以有时会很麻烦。值得庆幸的是,环境变量也可 以定义在bashrc文件中,这样当注销或更换控制台时,这些变量就一直有效,就不用老是export这些 变量了。
一、交叉工编译工具链的简介 ——为什么要使用交叉编译
在裁减和定制Linux内核用于嵌入式系统之前,由于一般嵌入式开发系统存储大小有限,通常都要在性 能优越的PC上建立一个用于目标机的交叉编译工具链,用该交叉编译工具链在PC上编译目标机上要运 行的程序。交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发环境,交叉编译工具链主 要由binutils、gcc和glibc 3个部分组成。有时出于减小 libc 库大小的考虑,也可以用别的 c 库来代替 glibc,例如 uClibc、dietlibc 和 newlib。建立交叉编译工具链是一个相当复杂的过程,如果不想自己经 历复杂繁琐的编译过程,网上有一些编译好的可用的交叉编译工具链可以下载,但就以学习为目的来说 读者有必要学习自己制作一个交叉编译工具链。
嵌入式linux交叉编译工具链
交叉编译工具简介 交叉编译工具链的制作
主要内容
一、交叉工编译工具链的简介 ——什么是交叉编译
1、什么是交叉编译? 就是在一个平台上生成可以在另一个平台上执行的代码。
采用交叉编译的主要原因是,多数嵌入式目标机不能提供足够的资源供编译过程使用,因而只 好将编译工作转移到高性能的宿主机中进行。
分步构建交叉编译工具链
二、交叉编译工具链的制作方法
2、建立工作目录
工作目录就是在什么目录下构建交叉工具链,目录的构建一般没有特别的要求,可以根据个人喜好建 立。例如当前的用户定义为jiabing,因此用户目录为/home/jiabing,在用户目录下首先建立一个工作 目录(armlinux),建立工作目录的命令行操作如下: # cd /home/jiabing # mkdir armlinux 再在这个工作目录armlinux下建立3个目录 build-tools、kernel 和tools。具体操作如下: # cd armlinux # mkdir build-tools kernel tools 其中各目录的作用如下。
二、交叉编译工具链的制作方法
三种方法: 分步编译和安装交叉编译工具链所需要的库和源代码,最终生成交叉编译工具链。该方法相对比较困难
,适合想深入学习构建交叉工具链的读者。如果只是想使用交叉工具链,建议使用方法二或方法三构建 交叉工具链。 通过Crosstool脚本工具来实现一次编译生成交叉编译工具链,该方法相对于方法一要简单许多,并且 出错的机会也非常少,建议大多数情况下使用该方法构建交叉编译工具链。 直接通过网上()下载已经制作好的交叉编译工具链。该方法的优点不用多说,当然是简单省事,但与 此同时该方法有一定的弊端就是局限性太大,因为毕竟是别人构建好的,也就是固定的没有灵活性,所 以构建所用的库以及编译器的版本也许并不适合你要编译的程序,同时也许会在使用时出现许多莫名的 错误,建议读者慎用此方法。
一、交叉工编译工具链的简介 ——为什么要使用交叉编译
这种方法在异平台移植和嵌入式开发时非常有用。相对与交叉编译,平常做的编译叫本地编译,也就是 在当前平台编译,编译得到的程序也是在本地执行。用来编译这种跨平台程序的编译器就叫交叉编译器 ,相对来说,用来做本地编译的工具就叫本地编译器。所以要生成在目标机上运行的程序,必须要用交 叉编译工具链来完成。
一、交叉工编译工具链的简介 ——为什么要使用交叉编译
为什么要用交叉编译器?交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平 台上的程序,比如在PC平台(X86 CPU)上编译出能运行在以ARM为内核的CPU平台上的程序,编译 得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行,虽然两个平台用的 都是Linux系统。
分步构建交叉编译工具链 3、建立环境变量
二、交叉编译工具链的制作方法
该步骤的目的是为了方便重复输入路径,因为重复操作每件相同的事情总会让人觉得很麻烦。声明以下 环境变量的目的是在之后编译工具库的时候会用到,很方便输入,尤其是可以降低输错路径的风险。
二、交叉编译工具链的制作方法
分步构建交叉编译工具链
1、下载所需的源代码包
安装包
下载地址
linux-2.4.20.tar.gz binutils-2.19.tar.bz2
gcc-3.3.6.tar.gz
安装包
下载地址
glibc-2.3.2.tar.gz glibc-linuxthreads-2.3.2.tar.gz
2、交叉编译工Βιβλιοθήκη Baidu链
一、交叉工编译工具链的简介 ——构建交叉编译工具链
交叉编译工具链主要包括针对目标系统的编译器 gcc、目标系统的二进制工具binutils、目标 系统的标准c库glibc和目标系统的 Linux 内核头文件。
一、交叉工编译工具链的简介 ——构建交叉编译工具链
• 构建交叉编译器的第一个步骤就是确定目标平台。在GNU系统中,每个目标平台都有一个明确的格式 ,这些信息用于在构建过程中识别要使用的不同工具的正确版本。因此,当在一个特定目标机下运行 GCC时,GCC便在目录路径中查找包含该目标规范的应用程序路径。GNU的目标规范格式为CPUPLATFORM-OS。例如x86/i386 目标机名为i686-pc-linux-gnu。本章的目的是讲述建立基于ARM平台的 交叉工具链,所以目标平台名为arm-linux-gnu。
# export PRJROOT=/home/jiabing/armlinux # export TARGET=arm-linux # export PREFIX=$PRJROOT/tools # export TARGET_PREFIX=$PREFIX/$TARGET # export PATH=$PREFIX/bin:$PATH 注意,用export声明的变量是临时的变量,也就是当注销或更换了控制台,这些环境变量就消失了,如 果还需要使用这些环境变量就必须重复export操作,所以有时会很麻烦。值得庆幸的是,环境变量也可 以定义在bashrc文件中,这样当注销或更换控制台时,这些变量就一直有效,就不用老是export这些 变量了。
一、交叉工编译工具链的简介 ——为什么要使用交叉编译
在裁减和定制Linux内核用于嵌入式系统之前,由于一般嵌入式开发系统存储大小有限,通常都要在性 能优越的PC上建立一个用于目标机的交叉编译工具链,用该交叉编译工具链在PC上编译目标机上要运 行的程序。交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发环境,交叉编译工具链主 要由binutils、gcc和glibc 3个部分组成。有时出于减小 libc 库大小的考虑,也可以用别的 c 库来代替 glibc,例如 uClibc、dietlibc 和 newlib。建立交叉编译工具链是一个相当复杂的过程,如果不想自己经 历复杂繁琐的编译过程,网上有一些编译好的可用的交叉编译工具链可以下载,但就以学习为目的来说 读者有必要学习自己制作一个交叉编译工具链。
嵌入式linux交叉编译工具链
交叉编译工具简介 交叉编译工具链的制作
主要内容
一、交叉工编译工具链的简介 ——什么是交叉编译
1、什么是交叉编译? 就是在一个平台上生成可以在另一个平台上执行的代码。
采用交叉编译的主要原因是,多数嵌入式目标机不能提供足够的资源供编译过程使用,因而只 好将编译工作转移到高性能的宿主机中进行。
分步构建交叉编译工具链
二、交叉编译工具链的制作方法
2、建立工作目录
工作目录就是在什么目录下构建交叉工具链,目录的构建一般没有特别的要求,可以根据个人喜好建 立。例如当前的用户定义为jiabing,因此用户目录为/home/jiabing,在用户目录下首先建立一个工作 目录(armlinux),建立工作目录的命令行操作如下: # cd /home/jiabing # mkdir armlinux 再在这个工作目录armlinux下建立3个目录 build-tools、kernel 和tools。具体操作如下: # cd armlinux # mkdir build-tools kernel tools 其中各目录的作用如下。
二、交叉编译工具链的制作方法
三种方法: 分步编译和安装交叉编译工具链所需要的库和源代码,最终生成交叉编译工具链。该方法相对比较困难
,适合想深入学习构建交叉工具链的读者。如果只是想使用交叉工具链,建议使用方法二或方法三构建 交叉工具链。 通过Crosstool脚本工具来实现一次编译生成交叉编译工具链,该方法相对于方法一要简单许多,并且 出错的机会也非常少,建议大多数情况下使用该方法构建交叉编译工具链。 直接通过网上()下载已经制作好的交叉编译工具链。该方法的优点不用多说,当然是简单省事,但与 此同时该方法有一定的弊端就是局限性太大,因为毕竟是别人构建好的,也就是固定的没有灵活性,所 以构建所用的库以及编译器的版本也许并不适合你要编译的程序,同时也许会在使用时出现许多莫名的 错误,建议读者慎用此方法。
一、交叉工编译工具链的简介 ——为什么要使用交叉编译
这种方法在异平台移植和嵌入式开发时非常有用。相对与交叉编译,平常做的编译叫本地编译,也就是 在当前平台编译,编译得到的程序也是在本地执行。用来编译这种跨平台程序的编译器就叫交叉编译器 ,相对来说,用来做本地编译的工具就叫本地编译器。所以要生成在目标机上运行的程序,必须要用交 叉编译工具链来完成。
一、交叉工编译工具链的简介 ——为什么要使用交叉编译
为什么要用交叉编译器?交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平 台上的程序,比如在PC平台(X86 CPU)上编译出能运行在以ARM为内核的CPU平台上的程序,编译 得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行,虽然两个平台用的 都是Linux系统。