linux实验三.docVIP

  • 12
  • 0
  • 约4.43千字
  • 约 6页
  • 2017-05-12 发布于河南
  • 举报
linux实验三

实验三 分步构建交叉编译链 实验目的 1、理解交叉编译的原理,了解交叉编译工具链 2、掌握分步构建交叉编译工具链的方法 实验内容 实验在理解交叉编译原理和交叉编译工具链的基础上,分步构建交叉编译工具链,主要步骤如下: 准备工作:下载好所需要的软件包,准备好内核头文件、组织好目录。 编译Binutils:这个软件包的编译相对简单,一般容易实现。 编译辅助gcc编译器:对gcc进行简单配置后,编译gcc,使其不依赖glibc,只对C语言支持,为后面glibc的编译做准备。 编译glibc库:首先对解压的内核头文件进行配置。在上一步的编译过程中,已经生成arm-linux-gcc工具,利用该工具编译glibc库。 重新编译完整的gcc:完整的gcc的编译需要glibc库的支持,在第一步的时候glibc还未被编译,所以只能简单配置,生成辅助的gcc,而在这一步,glibc库已经编译,可以使用,实现对gcc的完整编译。 编译gdb调试器:调试器与前面的那些软件是相互独立的,因此最后编译。 实验过程 (1)准备工作:根据课本上编译工具链所需资源列表,下载所需的软件包并解压,放置在一特定文件夹中,通过设置实现虚拟机与物理机的文件共享。本实验中的共享文件夹为“Linux”。所需软件包如下: (2)详细过程 1、建立工作目录 当前的用户为root,在用户目录下首先建立一个工作目录(armlinux),建立工作目录的命令行操作如下: # cd /root # mkdir armlinux 在armlinux下建立3个目录 build-tools、kernel 和 tools。具体操作如下: # cd armlinux # mkdir build-tools kernel tools 其中build-tools 用来存放下载的binutils、gcc、glibc等源代码和用来编译这些源代码的目录;kernel 用来存放内核源代码;tools 用来存放编译好的交叉编译工具和库文件。 2、建立环境变量 建立环境变量主要是用来将其定义为经常使用的路径,来代替直接路径,避免重复输入冗长的命令,简化输入过程,降低输错路径的概率。 具体命令如下: 3、编译、安装Binutils 首先解压binutils-2.16.1tar.bz2包,命令如下: # cd $PRJROOT/build-tools # tar –xjvf binutils-2.16.1.tar.bz2 接着配置Binutils工具,具体操作如下: # cd $PRJROOT/build-tools # mkdir build-binutils # cd build-binutils # ../ binutils-2.16.1/configure --target=$TARGET --prefix=$PREFIX 其中选项–target的意思是制定生成的是 arm-linux 的工具,--prefix 是指出可执行文件安装的位置。执行上述操作会出现很多check信息,最后产生 Makefile 文件。 接下来执行make和安装操作,命令如下: # make # make install 安装完成后查看/home/mike/armlinux/tools/bin目录下的文件,如果查看结果如下,表明此时Binutils工具已经安装结束。 4、获得内核头文件 (1)在kernel目录下解压linux-2.6.15.tar.gz内核包,执行命令如下: # cd $PRJROOT/kernel # tar –xvzf linux-2.6.15.tar.gz (2)接下来配置编译内核使其生成正确的头文件,执行命令如下: # cd linux-2.6.15 # make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig 在出现的界面中选择三星的S3C2410(System Type-ARM System Type-/Samsung S3C2410)配置完退出并保存,检查一下内核目录中的include/linux/version.h和include/linux/autoconf.h文件是不是生成了,这是编译glibc时要用到的,如果version.h 和 autoconf.h 文件存在,说明生成了正确的头文件。界面如下: 复制头文件到交叉编译工具链的目录,首先需要在/home/mike/armlinux/tools/arm-linux目录下建立工具的头文件目录inlcude,然后复制内核头文件到此目录下,具体操作如下: # mkdir –p $TARGET_PREFIX/include # cp –r $PRJROOT/kern

文档评论(0)

1亿VIP精品文档

相关文档