当前位置:首页 > 嵌入式 > 嵌入式软件

1 交叉编译工具链功能说明

交叉编译技术,就是一种在一个异构平台上编译出目标平台程序的技术。比如在PC平台(X86 CPU)上编译出能运行在以VxWorks为内核的CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到VxWorks CPU平台上才能运行。

每一个软件在编译的过程中都要经过一系列的处理,才能从源代码变成可执行的目标代码。这一系列处理包括预编译、高级语言编译、汇编、链接及重定位。这一套流程里面用到的每个工具和相关的库组成的集合,就称为工具链( chain)。以GNU的开发工具GCC为例,它就包括了预编译器CPP、C编译器GCC、汇编器AS和链接器LD等。在GNU自己对工具链定义中,还加进了一套额外的用于处理二进制包的工具包Binutils,整个工具链应该是GCC+Binutils+Glibc。对于i586-wrs-vxworks工具来说,因为在生成VxWorks交叉编译工具链时,用到的C库文件是从Tornado开发软件中提取出来的,所以生成的实际交叉编译工具链应该是GCC+Binutils+Tornado(C库文件)。GCC(GNU C Compiler)是一个C语言编译器。随着众多自由开发者的加入和GCC自身的发展,如今的GCC已经是一个包含众多语言的编译器了。其中包括C、C++、Ada、Object C和等。所以,GCC也就变为GNU Compiler Collection,也就是GNU编译器集合。当然,如今的GCC借助其特性,具有了交叉编译器的功能,所以又将GCC称为交叉编译工具链。

2 i586-wrs-vxworks交叉编译工具链制作背景

现在市场上有很多公司的选用的是基于WindRiver(风河)公司的Vxworks系列产品。

一般说来,在开发VxWorks嵌入式的平台时,开发厂商会推出一整套交叉编译工具链来配合自身的嵌入式产品,但是这些由商业公司提供的工具链,都不会附有工具链相关的源代码和制作方法,灵活性不足,并且它们一般都与整套开发系统捆绑销售使用,成本较高。为了更好地理解这种技术和降低成本,我们使用了国际开源组织GNU开发的工具链作为产品开发的工具,提供了更好的使用灵活性。

3 交叉编译工具链设计

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

①这个工具链必须是可以运行在原工作站平台上的。

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

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

根据这样的思路,采取了如下几个步骤:

3.1 确定宿主机平台、目标机平台及开发工具

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

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

host_alias(宿主机名称) = i686?pc?cygwin32

host_cpu(宿主机cpu构架) = i686

host_(宿主机产商)= pc

host_os(宿主机操作平台) = cygwin32

target_alias(目标机名称) = i586?wrs?vxworks

target_cpu(目标机cpu构架) = i586

target_(目标机产商) = wrs

target_os(目标机操作平台) = vxworks

3.2 选择开发资源包

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

3.3 建立环境变量

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

export PRJROOT="/VxWorks"

export TARGET="i586"?wrs?vxworks

export PREFIX=$PRJROOT/s

export TARGET_PREFIX=$PREFIX/$TARGET

export PATH=$PREFIX/bin:$PATH

3.4 生成Binutils二进制库

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

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

cd $PRJROOT

cd

tar xzvf binutils 2.10.tar.gz

p binutils

cd build binutils

../binutils 2.10/configure

target=$TARGET

prefix=$PREFIX

prefix=$PREFIX

export PATH=$PREFIX/bin:$PATH

编译完成以后,将会生成Binutils工具,对这些工具作用的解释略——编者注。

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

配置参数如下:

cd $PRJROOT/build

tar ?xjvf gcc?2.95.3.tar.bz2

build?gcc

cd build?gcc

../gcc 2.95.3/configure

tatget=$TARGET

prefix=$PREFIX

?prefix=$PREFIX

?=/c/Tornado/target/h

libs= /c/Tornado /target/lib

included gettext

with gnu as

with gnu ld

enable languages=c,c++ v

LANGUAGES="c c++"

make LANGUAGES="c c++"

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

5 结论

本文生成的i586-wrs-vxworks交叉编译工具链通过了大量的工程实践与测试,可以良好地运行在基于Windows操作系统的PC机平台上,编译和链接基于Vx-Works平台的程序,从而满足了VxWorks商业软件嵌入式应用的开源化,能为客户节约不少经济开销,但是改进GCC对代码的优化还有待进一步的研究。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

特朗普集团近日取消了其新推出的T1智能手机“将在美国制造”的宣传标语,此举源于外界对这款手机能否以当前定价在美国本土生产的质疑。

关键字: 特朗普 苹果 AI

美国总统特朗普在公开场合表示,他已要求苹果公司CEO蒂姆·库克停止在印度建厂,矛头直指该公司生产多元化的计划。

关键字: 特朗普 苹果 AI

4月10日消息,据媒体报道,美国总统特朗普宣布,美国对部分贸易伙伴暂停90天执行新关税政策,同时对中国的关税提高到125%,该消息公布后苹果股价飙升了15%。这次反弹使苹果市值增加了4000多亿美元,目前苹果市值接近3万...

关键字: 特朗普 AI 人工智能 特斯拉

3月25日消息,据报道,当地时间3月20日,美国总统特朗普在社交媒体平台“真实社交”上发文写道:“那些被抓到破坏特斯拉的人,将有很大可能被判入狱长达20年,这包括资助(破坏特斯拉汽车)者,我们正在寻找你。”

关键字: 特朗普 AI 人工智能 特斯拉

1月22日消息,刚刚,新任美国总统特朗普放出重磅消息,将全力支持美国AI发展。

关键字: 特朗普 AI 人工智能

特朗普先生有两件事一定会载入史册,一个是筑墙,一个是挖坑。在美墨边境筑墙的口号确保边境安全,降低因非法移民引起的犯罪率过高问题;在中美科技产业之间挖坑的口号也是安全,美国企业不得使用对美国国家安全构成威胁的电信设备,总统...

关键字: 特朗普 孤立主义 科技产业

据路透社1月17日消息显示,知情人士透露,特朗普已通知英特尔、铠侠在内的几家华为供应商,将要撤销其对华为的出货的部分许可证,同时将拒绝其他数十个向华为供货的申请。据透露,共有4家公司的8份许可被撤销。另外,相关公司收到撤...

关键字: 华为 芯片 特朗普

曾在2018年时被美国总统特朗普称作“世界第八奇迹”的富士康集团在美国威斯康星州投资建设的LCD显示屏工厂项目,如今却因为富士康将项目大幅缩水并拒绝签订新的合同而陷入了僵局。这也导致富士康无法从当地政府那里获得约40亿美...

关键字: 特朗普 富士康

今年5月,因自己发布的推文被贴上“无确凿依据”标签而与推特发生激烈争执后,美国总统特朗普签署了一项行政令,下令要求重审《通信规范法》第230条。

关键字: 谷歌 facebook 特朗普

众所周知,寄往白宫的所有邮件在到达白宫之前都会在他地进行分类和筛选。9月19日,根据美国相关执法官员的通报,本周早些时候,执法人员截获了一个寄给特朗普总统的包裹,该包裹内包含蓖麻毒蛋白。

关键字: 美国 白宫 特朗普
关闭