欢迎来到天天文库
浏览记录
ID:30361856
大小:119.39 KB
页数:31页
时间:2018-12-29
《linuxonpower中的gnu》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、LinuxonPOWER中的GNUCC自:如有侵权,请告之…MatthewDavis,LinuxPower技术顾问,IBMGaryHook(ghook@us.ibm.com),高级技术顾问,IBM简介:在本文中,您将学习有关LinuxonPOWER中GNU工具链的知识。本文将重点介绍可用于使用LinuxonPOWER上的GNU编译器(compiler)、链接器(linker)和加载器(loader)的一些常用选项,还将讨论GNUbinutils,重点考虑特定于LinuxonPOWER的一些考虑事项,以及SUSELinuxEnterpriseServ
2、erVersion9和RedHatEnterpriseLinuxVersion4中提供的一些新特性。标记本文!发布日期:2005年6月13日级别:初级访问情况140次浏览建议:0(添加评论)平均分(共0个评分)简介GNU软件的一个显著优点是它来自严格的开发者社区,具有很好的可移植性。GNU开发工具链(toolchain)是指GNUCompilerCollection、GNUlibc以及用来编译、测试和分析软件的GNUbinutils。这些工具遵守PowerOpenABI和64位的PowerPCELFABISupplement规范,从而确保与其他类似
3、工具的二进制兼容性。此外,它们是LinuxonPOWER的默认开发工具链。尽管GNU工具重点强调的是兼容性,但是与其他通用开发平台相比,它们在POWER架构上仍然有一些特有的区别。POWER上的指令集与其他架构有所不同,GNUtoolchain负责处理这些区别。开发人员应该理解使用GNUtoolchainforLinuxonPOWER的细节。例如,在LinuxonPOWERABI和其他通用的ABI之间有所差异,开发人员必须知道在开发和移植软件时,这些差异会对自己的代码产生什么影响。值得一提的是IBMXLC/C++和Fortran编译器也会使用GNU
4、toolchain来生成二进制文件。在这些相关的地方,我们将针对XLC/C++对GNUtoolchain进行讨。通过逐步解决基本操作、特定于POWER的操作、潜在的缺陷和GNUtoolchain一些新开发的特性,本文解决了GNUtoolchainforLinuxonPOWER的软件开发和可移植性需求问题。本文还对GCCC/C++编译器、GNU链接器和汇编程序以及其他一些GNUbinutils进行了探索。虽然还有很多平台都没有介绍,但GNU手册通常都会引用一些完整介绍这些主题的资料。本文并没有讨论LinuxonPOWER系统中其他GCC编译器、IBM
5、XLC/C++、Fortran或Java开发的一些细节问题。我们从GCC编译器和编译驱动器入手开始介绍,依次介绍GNU链接器、GNU汇编程序和其他的binutils。本文没有明确地对GNUCLibrary进行讨论,因为特定于POWER的变体很少,应该不会影响到用户,CLibrary通常也被认为是GNUToolchain的一部分。在合适的地方,我们给出了在LinuxonPOWER上发现的一些细微区别,为那些熟悉其他平台上的Linux或者在POWER架构上运行的AIX的开发人员提供帮助。(例如,x86和POWER之间就有一些区别:前者的汇编程序不同,后
6、者在ELF和XCOFFABI之间也有所不同。)回页首GNUCompilerCollection从历史传统上来说,GCC是代表GNUCCompiler,但是现在它代表GNUCompilerCollection。GCC是用于C、C++、Objective-C、Java、Fortran和Ada编程语言的一个编译器集。不过本文的讨论仅仅局限于C和C++编译器,尤其是那些GCC的操作和选项、特定于POWER架构的GCC特性操作和受GCC支持的最新特性,这些特性是随LinuxforPOWER架构的两个领先发行版本(RedHatEnterpriseServerA
7、S和SUSELINUXEnterpriseServer)一起打包的。GCC的基本操作GCC的基本操作驱动着预处理、编译、汇编和链接的过程。传递给GCC的大部分选项实际上都会被重定向给工具链中的其他组件。有些选项,例如平台的选择、调试和优化标记,会为编译器和其他组件同时提供参数。输入选项编译器必须知道要处理的是哪种类型的输入数据。例如,C源程序文件的处理就与C++文件不同。对于编译器来说,有一个基本的隐式选项:源程序文件的扩展名。该选项将决定调用哪一个GCC编译器。例如,file.c调用的是C编译器,而foo.C或foo.cxx则会调用C++编译器。
8、在GCC手册中列出了可接收源代码文件的扩展名的完整列表。下图展示了GNUToolchain生成可执行程序或共享对象所应采取
此文档下载收益归作者所有