【整理】Ubuntu 16.04[64bit]交叉编译环境搭建过程图解

  • 格式:docx
  • 大小:704.88 KB
  • 文档页数:9

下载文档原格式

  / 14
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

开发裸机环境之前需要先搭建其开发环境,毕竟工欲善其事必先利其器嘛。

安装步骤

1、准备工具安装目录

将压缩包arm-Linux-gcc-4.4.3.tar.gz存放在一个目录下,这个目录就是你等会解压缩的目录,以后这个目录就不能随便删掉了,我的存放路径是/home/aldrich/arm,如下图,记住这个路径,等会还会用到。

1. .tar.gz 和.tgz

2. 解压:tar zxvf FileName.tar.gz

3. 压缩:tar zcvf FileName.tar.gz DirName

2、安装软件

使用tar命令:tar zxvf arm-linux-gcc-4.3.2.tgz将software文件夹下的arm-linux-gcc-4.3.2.tgz解压缩安装到当前目录。通过下图可以看到解压成功了,并且解压后的文件存放在了

1. /home/aldrich/arm/arm-linux-gcc-4.3.2

文件夹下,如下图所示,这个存放路径可得记住,如下图

3、配置系统环境变量

配置环境前先坐下普及:

Ubuntu不同目录下profile与bashrc的区别

/etc/profile此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置。

/etc/bash.bashrc为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。

~/.bash_profile每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次,默认情况下,他设置一些环境变量,执行用户的.bashrc文件。

~/.bashrc该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。

~/.bash_logout当每次退出系统(退出bash shell)时,执行该文件。

另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系。

~/.bash_profile是交互式、login 方式进入bash 运行的。

~/.bashrc是交互式non-login 方式进入bash 运行的。

通常二者设置大致相同,所以通常前者会调用后者。

登陆系统时shell读取的顺序应该是

/etc/profile ->/etc/enviroment -->$HOME/.profile -->$HOME/.env

原因应该是jtw所说的用户环境和系统环境的区别了

如果同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment)有不同的值那应该是以用户环境为准了

接下来配置系统环境变量,把交叉编译工具链的路径添加到环境变量PATH中去,这样就可以在任何目录下使用这些工具。记下上一步中的安装路径,使用命令:vim /home/aldrich/.bashrc 编辑.bashrc文件,添加环境变量。

在该文件中最后一行添加:

1. export PATH=$PATH:/home/aldrich/arm/arm-linux-gcc-4.3.2/bin

这个路径就是那个bin目录所在的路径,可能你的不一样,按照你实际的目录填就可以了,如下图

编写完保存就好了

4、使环境变量生效

使用命令:source /home/aldrich/.bashrc 使环境变量生效

5、检查环境变量是否设置成功

在终端上输入命令arm-linux 再按Tab键,可以看到下图,说明环境变量设置成功了

6、安装32位库兼容包

输入命令后,出现下面的错误提示信息:

1. /home/aldrich/arm/arm-linux-gcc-4.3.2/bin/arm-linux-gcc:

2. line 3:

3. /home/aldrich/arm/arm-linux-gcc-

4.3.2/bin/arm-none-linux-gnueabi-gcc:No such file or directory

说是出现这种问题的原因是由于Ubuntu16.04用的是64位的,按以前的解决方法就是使用命令:

sudo apt-get install ia32-libs 装一些32位的库

出现上述界面是因为Ubuntu16.04版本已不支持ia32-libs的软件包,而是使用了lib32ncurses5、lib32z1软件包做为替代,所以在Ubuntu16.04版本当中应该安装执行:

1. sudo apt-get install lib32ncurses5 lib32z1

待安装完32位的库之后,再使用命令:arm-linux-gcc -v,这一次就成功了,如下图

8、交叉编译工具验证

编译一个hello.c文件

1. #include

2. int main()

3. {

4. printf("hello world!\n");

5. }

使用命令:arm-linux-gcc hello.c -o hello 看是否编译成功

可见成功生成了二进制文件,至此,交叉编译工具就配置完成了。

如出现错误,则按照下面的处理安装lib32stdc++6

cc1: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

hg@hg-ubuntu64:~/Design$ sudo apt-get install lib32stdc++6

如果使用命令:arm-linux-gcc test1.c -o test1

运行./test1

出现如下错误:

bash: ./test1: cannot execute binary file: 可执行文件格式错误

是因为arm-linux-gcc-4.4.3是32位编译器,编译生成了32位可执行程序,因为针对的是32位的ARM,所以在64位ubuntu 下不能正常运行

如要在64位下运行普通程序,则需在使用g++编译器(可能需要root权限)编译:

root@hg-ubuntu64:/home/hg/Design# g++ -o test1 test1.c

参见韦东山linux应用开发完全手册

二、安装其他

1.安装工具bison、flex,它们分别是语法、词发分析器:

sudo apt-get install bison flex

2.安装C库函数的man手册,可以通过man funxxx 命令查看函数用法:

sudo apt-get install manpages-dev