ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

交叉编译工具链

2021-07-03 07:00:12  阅读:228  来源: 互联网

标签:GCC U盘 交叉 编译 工具 Binutils


交叉编译工具链

配置

主机操作系统     ----Win10企业版

虚拟机软件     ----Vmware@workstation 10.0.4 build 2249910

虚拟机操作系统    ---- Win7 32bit 旗舰版

               ---- Ubuntu 14.04 LTS(GNU/Linux 3.13.0-24-generic i686)

控制台软件     ----SecureCRT 5.1.2 build 274

开发板       ----九鼎科技X210BV3S

工具

虽然Ubuntu自带有gcc编译器,但gcc的编译结果仅适用;编写的程序要在ARM上运行,因此应安装使用arm-linux-gcc。

工具安装

1)将arm-xxx.tar.bz2拷贝到U盘中,将U盘插到电脑上,Ubuntu会检测到U盘插入,自动连接成功。

2)在Ubuntu中执行

$ sudo su

# fdisk –l     可见U盘的盘符是sdb1,FAT32格式

# mount –t vfat  /dev/sdb1  /mnt   挂载U盘到/mnt

# ls       查看U盘arm-xxx.tar.bz2 

 

 

 交叉编译工具链设计

要构建出一个交叉工具链,需要解决3个问题:

l  工具链可以运行在原工作站平台。

l  更换一个与目标平台对应的汇编器,工具链能产生对应的目标代码。

l  更换一套与目标平台对应的二进制库,使得工具链在连接时能找到正确的二进制库。

步骤:

n  确定宿主机,目标机平台,开发工具

GCC交叉编译工具要能工作在基于Windows构架的平台,编译生成的可执行代码要能够满足基于X86结构的VxWorks嵌入式平台。编译时选用的开发平台为Windows XP,开发工具为Cygwin。

Cygwin当初首先对GCC、GDB、GAS等开发工具进行了改进,能够生成并解释Win32的目标文件。要把这些工具移植到Wi-ndows平台上去。一种方案是基于Win32 API对这些工具的源代码进行大幅修改,这样显然需要做大量工作。一种不同的方法——写一个共享库(cygwin.dll),把Win32 API中没有的Unix风格的调用(如fork、spawn、signals、select、sockets等)封装在里面,也就是说,基于Win32 API写了一个Llnix系统库的模拟层。这样,只要把这些工具的源代码和共享库连接到一起,就可以使用Unix主机上的交叉编译器,生成可以在Windows平台上运行的工具集。

 

 

 n  选择开发资源包

GCC、BinuTIls有各自的版本号,不是任意组合都可以编译成功并最终建立一个交叉编译环境的。基于稳定性,选用的GCC和Binutils版本较老一点,但是大多数工程人员推荐的版本(Binutils-2.10,GCC-2.95.3)。

n  建立环境变量

输入路径,直接输入绝对路径。声明以下环境变量的目的是在之后编译工具库的时候会用到,方便输入,尤其是可以降低输错路径的风险。

 

 

 n  生成Binutils二进制库

Binutils是GNU工具,包括链接器、汇编器和用于目标文件和档案的工具,是二进制代码的处理维护工具。安装Binutils工具包含的程序有addr2line、ar、as、c++filt、gprof、ld、am、objcopy、objdump、ranlib、readelf、size、strings、strip、libiberty、libbfd和libopcodes。

安装二进制工具,使用主机的GCC进行编译。生成的交叉二进制工具i586-wrs-vxworks-ar、i586-wrs-vxwor-ks-as、i586-wrs-vxworks-ld等是编译其他交叉程序的基础,必须放到第一步进行。编译过程如下:

 

 

 编译完成,生成Binutils工具。

n  生成i586-wrs-vxworks交叉编译工具链

配置参数如下:

 

 

 执行完编译,安装命令之后,将会在$PREFIX/bin/文件夹中生成工具。完整的基于VxWorks的GCC交叉编译工具链就建立起来了。

i586-wrs-vxworks交叉编译工具链,可以良好地运行在基于Windows操作系统的PC机平台上,编译和链接基于Vx-Works平台的程序,从而满足了VxWorks商业软件嵌入式应用的开源化,能为客户节约开销,改进GCC对代码的优化。

 

标签:GCC,U盘,交叉,编译,工具,Binutils
来源: https://www.cnblogs.com/wujianming-110117/p/14965473.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有