搭建Linux交叉编译开发环境

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
# CC=armv5-unknown-linuxgcc ./configure arm-linux --enableadd-ons
--build=i686-pc-linux-gnu --disableiconv
--with-headers=/tmp/linux-2.4.9-ac9rmk1-np1/include
--prefix=/opt/host/armv4l # make
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
注意:glibc主要是程序运行所需要的库函数的集合, 包括输入输出,数学,io控制等等
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
(6)安装g++ # cd /tmp/gcc-2.95.3 # ./configure --target=armv4l-unknown-
式,去掉函数原型中的参数类型。 • cpp——gnu的 C 的预编译器。 • gcov——gcc 的辅助测试工具,可以用它来分析和优
化程序。
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
(5) 建立c库(glibc) # cd /tmp
# tar zxvf glibc-2.2.4.tar.gz # mv glibc-linuxthreads-2.2.4.tar.gz ./glibc-2.2.4 # cd glibc-2.2.4 # tar zxvf glibc-linuxthreads-2.2.4.tar.gz
files under /usr/include dir to the current
dir.
搭建Linux交叉编译开发环境
# ln -s /tmp/linux-2.4.9-ac9-rmk1np1/include/asm-arm asm
# ln -s /tmp/linux-2.4.9-ac9-rmk1np1/include/linux linux
rmk1.bz2 diff-2.4.9-ac9-rmk1np1.gz ./linux-2.4.9ac9-rmkຫໍສະໝຸດ Baidu-np1
搭建Linux交叉编译开发环境
# cd linux-2.4.9-ac9-rmk1-np1 : kernel 2.4.9
# gzip -cd patch-2.4.9-ac9.gz | patch p1 : Alan Cox patch
ranlib——为一个存档文件产生一个索引, 并将这个索引存入存档文件中。 readelf——显示elf格式的目标文件的信息。 size——显示目标文件各个节的大小和目标 文件的大小。 strings——打印出目标文件中可以打印的字 符串,有个默认的长度,为4。 strip——剥掉目标文件的所有的符号信息。
prefix=/opt/host/armv4l # make LANGUAGES=c # make LANGUAGES=c install
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
注意: • gcc——gnu 的 C 语言编译器。 • unprotoize——将 ANSI C 的源码转化为 K&R C 的形
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
(2)输出工具的路径,使得以后的编译工作能看到这 些工具: # export PATH=/opt/host/armv5/bin:$PATH
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
(3)建立编译需要使用的头文件 # cd /tmp # tar zxvf linux-2.4.9.tar.gz # mv linux linux-2.4.9-ac9-rmk1-np1 # mv patch-2.4.9-ac9.gz patch-2.4.9-ac9-
--prefix=/opt/host/armv5 # make # make install
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
注意:这样就在/opt/host/armv5/bin下产生了 binutils,它们的作用如下:
• addr2line——将要找的地址转成文件和行号,它 要使用 debug 信息。
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
ld——gnu 的连接器。 nm——列出目标文件的符号和对应的地址。 objcopy——将某种格式的目标文件转化成另外格式 的目标文件。 objdump——显示目标文件的信息。
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
ELDK包括了一个安装工具和许多RPM包,他们可以 安装到用户的交叉编译的主机的硬盘中。ELDK的 RPM包可以分为2种: • 嵌入式Linux开发工具; • 为目标处理器编译好的工具和元件。 • 其中,第一部分包括执行在开发主机上的交叉编译 工具,有GNU交叉编译器GCC、Binutils和GDB等。 • 第二部分是一些已经编译好的、可以在目标开发板 上运行的工具和库。这些工具和库可以用来建立一 个Linux的Roofs文件系统。
# make dep : Also do to create header files.
# cd /opt/host/armv4l/armv4l-unknownlinux
# cd include : If not existing, make include directory.
# cp -a /usr/include/* . : Copy all header
• ar——产生、修改和解开一个存档文件。 • as——gnu 的汇编器。
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
c++filt——C++ 和 java 中有一种重载函数,所用的重 载函数最后会被编译转化成汇编的标号,c++filt 就 是实现这种反向的转化,根据标号得到函数名。 gasp——gnu 汇编器预编译器。
2.2 建立交叉编译开发工具链
注意: • g++——gnu的 c++ 编译器。 • protoize——与unprotoize相反,将K&R C
的源码转化为ANSI C的形式,函数原型中 加入参数类型。 • c++——gnu的c++编译器。
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
搭建Linux交叉编译开发环境
2.3 配置主机服务
2.3.1 配置samba • Samba服务使Linux和Windows之间实现文件
共享,方便对文件的编辑。 1) 修改samba配置文件/etc/samba/smb.conf 2) 为 Samba 创建一个单独的口令文件。要 根据你的现存 /etc/passwd 文件来创建 3) 改变Samba口令文件的权限许可,因此 只有根用户才有读写权限
linux --with-libs=/opt/host/armv4l/lib --with-headers=/opt/host/armv4l/include --prefix=/opt/host/armv4l # make LANGUAGES="c c++" # make LANGUAGES="c c++" install 搭建Linux交叉编译开发环境
注意:要把linux的头文件拷做来作为编译的头 文件的原因是,我们要编译的是给ARM处理 器使用的编译器,那么就需要一个用于ARM 处理器的Linux内核系统的头文件
搭建Linux交叉编译开发环境
(4)编译ARM-GCC交叉编译器 # cd gcc-2.95.3 # ./configure --target=armv4l-unknown-linux --
• SuSE Linux 8.x, 9.0, 9.1, 9.2
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
Debian 3.0 (Woody) and testing (Sarge) Ubuntu 4.10 FreeBSD 5.0 Suse Linux 7.2, 7.3 Mandrake 8.2 Slackware 8.1beta2 Gentoo Linux 1.4_rc2 ELDK同时支持ARM、PPC、MIPS等多种处理 器。
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
2.2.3 验证工具链 注意: 通过上述两种方式建立的工具链,还需要经过验证 方可使用,我们主要通过实际编译一个例子程序来 验证。
搭建Linux交叉编译开发环境
2.3 配置主机服务
在嵌入式软件开发过程中,有些主机服务是必要的, 同时也会为我们的开发工作带来便利。 这里主要介绍四种主机服务:samba、DHCP、TFTP 和NFS。
搭建Linux交叉编译开发 环境
2020/11/20
搭建Linux交叉编译开发环境
2.1 什么是交叉编译
什么是交叉编译呢?简单地说,就是在一个平台上生 成另一个平台上的可执行代码。这里需要注意的是 所谓平台,实际上包含两个概念:体系结构 (Architecture)和操作系统(Operating System)。 同一个体系结构可以运行不同的操作系统;同一个 操作系统也可以在不同的体系结构上运行。
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
建立整个tool chain 的步骤
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
(1) Installing binutils # cd /tmp # tar zxvf binutils-2.11.2.tar.gz # cd binutils-2.11.2 # ./configure --target=armv5-unknown-linux
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
需求:下载源文件、补丁和建立编译的目录 a, 下载:binutils-2.11.2.tar, diff-2.4.9-ac9-rmk1-
np1, gcc-2.95.3.tar, glibc-2.2.4.tar, glibclinuxthreads-2.2.4.tar, linux-2.4.9.tar, patch2.4.9-ac9, patch-2.4.9-ac9-rmk1, patch-2.4.9ac9-rmk2 b, 建目录:将所有的源代码放到/usr/tmp/下; 交叉编译器将安装在/opt/host/armv5/
2.2.2 下载工具链
这里主要介绍一下Denx公司发布的一整套开放 源 码 的 嵌 入 式 Linux 开 发 工 具 链 ——ELDK (Embedded Linux Development Kit)
• ELDK可以安装和运行在以下主机环境中:
• Fedora Core 1, 2 , 3
• Red Hat Linux 7.3, 8.0, 9
搭建Linux交叉编译开发环境
2.2 建立交叉编译开发工具链
2.2.1 编译工具链 以下是一个基于RedHat linux的交叉编译环境的建立过程。 整个编译过程包括: 1. 下载源文件、补丁和建立编译的目录; 2. 建立内核头文件; 3. 建立二进制工具(binutils); 4. 建立初始编译器(bootstrap gcc); 5. 建立c库(glibc); 6. 建立全套编译器(full gcc)。
搭建Linux交叉编译开发环境
2.3 配置主机服务
4) 要设置每个 Samba 用户的口令,使用以 下命令(把username 替换为每个用户的用户 名)
# bzip2 -cd patch-2.4.9-ac9-rmk1.bz2 | patch -p1 : Russell King patch
# gzip -cd diff-2.4.9-ac9-rmk1-np1.gz | patch -p1 : Nicholas Pitre patch
# make menuconfig : Do to create ARM header files. When you exit, select save 搭建Linux交叉编译开发环境
相关文档
最新文档