⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gcc-howto.txt

📁 linux-bible.rar linux-bible.rar
💻 TXT
📖 第 1 页 / 共 5 页
字号:
                         The Linux GCC HOWTO中译版V0.2                                       作者: Daniel Barlow <dan@detached.demon.co.uk>译者: 陈建勋(Frank J.S. Chen)<frank63@ms5.hinet.net>   v1.17, 28 February 1996     _________________________________________________________________      本文阐述安装GNU C编译器和程式馆的方法,同时概观地说明程式的编译、连结、   执行、除错的过程以及可能面临的诸多问题。写作的参考资料泰半来自於Mitch   D'Souza先生所收集的GCC-FAQ;而另一个来源是ELF-HOWTO。此份HOWTO可以说已   代替了GCC-FAQ,而且即将要永久替代ELF-HOWTO了。此乃GCC-HOWTO第一份公开发   行的版本(不须理会版本序号;那是RCS的杰作),有任何指正与建议的,本人都   很欢迎。     _________________________________________________________________   1. 行远必自迩!     * 1.1 译者的话     * 1.2 动与静     * 1.3 作者的私语     * 1.4 印刷与排版       2. 东东在哪儿?     * 2.1 GCC-HOWTO在哪儿?     * 2.2 GCC相关的资料又在哪儿?     * 2.3 GCC      * 2.4 C程式馆与标头档     * 2.5 有关联的工具 (as, ld, ar, strings etc)       3. GCC的安装与GCC的设定     * 3.1 GCC的版本     * 3.2 东东装好後都到哪儿去了?     * 3.3 标头档ㄋㄟ?标头档ㄋㄟ?     * 3.4 建立交叉编译器(Building cross compilers)       4. 移植程式与编译程式     * 4.1 gcc自行定义的符号     * 4.2 线上求助说明     * 4.3 移植能力       5. 除错与监管     * 5.1 预防重於治疗(lint)     * 5.2 除错     * 5.3 监管       6. 连结     * 6.1 共享程式库 vs静态程式库     * 6.2 终极审判(‘sin() 在哪个程式库里?’)     * 6.3 X档案?     * 6.4 建立你自己的程式库       7. 动态载入     * 7.1 基本概念     * 7.2 错误讯息     * 7.3 控制动态载入器的运作     * 7.4 以动态载入撰写程式       8. 与发展人士联络     * 8.1 Bug报表     * 8.2 协助发展       9. 结语     * 9.1 名人榜     * 9.2 翻译     * 9.3 欢迎任何的回馈     * 9.4 合法的行迳规定       10. 索引     _________________________________________________________________   1. 行远必自迩!1.1 译者的话     * 这份译文为Linux document projects(LDP)中文翻译计画系列之一。目前之       网址为 [1]http://www.linux.org.tw/CLDP/,欢迎各位网友踊跃投入此一计       画。     * 我并没有完全按照原文逐字翻译。为了力求译文通畅可读,我会稍稍的重组       一部份的文字,加油添醋,或是精简原文;这样做的话,可以弥补中英文间       语法结构的差异性,且语气可以贯通无碍。     * 一些关键字与专业词汇等,会附加上原文单字。     * 遇有转译困难,唯原文常见的字汇如bugs、shadow password、padding       、image之类的,则保留原文不变。若阁下对这些字汇有适当译辞的,请不吝       指教。     * 内文中若遇有"[译者注:**]"之标记,则为本人额外之注解。     * 对这篇译文有任何建议与疑问的,请email至frank63@ms5.hinet.net。     * WWW Home Page: [2]http://linux.ntcic.edu.tw/~jsfrank/。     * 此中译文件之翻译权已取得英籍之原作者Daniel Barlow 先生之同意;另,       陈建勋先生保有此份中译版文件所有的权利,你可以任意的拷贝,以各种媒       体散布这份中译文件,唯此节补充说明需原封不动附上,且不可任意更动译       文。     * v0.1版的译文相当粗糙,连文句的语法结构都嫌太过於松散,v0.2版针对中       文的用字习惯来修正,并将上一版译的不妥当的地方修正过来,例如either       这个字,英国人常把either当名词用,指两者中任意一个;这份HOWTO就充份       反应出这个用字习性,跟美语有基本上的差异。     * 文中有几句话没有译出来,一方面是看不懂,另方面是直译也译不出来,所       以只好保留原文了,要是阁下有新的领悟的,无论如何请告诉我。     * v0.1版翻译起始日期为:11/7/97;截止日期为:11/19/97。     * v0.2版修正起始日期:5/13/98;截止日期为:6/3/98。       1.2 动与静   目前Linux的发展正波涛汹涌的进行著。简单一点讲,Linux有两种执行档的格式   可用,取决於你的系统是怎麽整合起来的;你的Linux应该是其中一种吧!阅读这   份文件,可以帮助你□清执行档的类别。      要如何区别呢?执行公用程式‘file’(例如,file /bin/bash)就对了。   就ELF的程式而言,萤幕上显示出来的讯息会含有ELF的字眼;如果说是a.out的,   讯息内会箝有 Linux/i386的字样。      ELF与a.out格式的差异之处会在後续的章节中讨论(很广泛喔!)。ELF是比较新   的格式,一般而言,接受的程度较佳。   1.3 作者的私语   版权说明与合法的行迳规定,就摆在这份文件的尾端。除此之外,我还有一些不   得不提醒你的话要讲。就算你□著没事干,也不要在Usenet上丢一些呆瓜问的问   题;还有,不要老以为自己C语言的功力深厚,专门发表一些不是bugs的bugs出来   丢人现眼,这不就等於告诉别人你不学无术,在关老爷面前耍大刀了吗?所以说   自以为是的英雄主义是得不偿失的。   1.4 印刷与排版   如果你现在读的是Postscript、dvi或是html格式,那麽你所看到的字型变化就会   比只读纯文字格式的人多一些。特别是档案名称、命令、命令的输出与摘录出来   的原始码等,统统都是打字机的字型。这样做的话,对於某些需要强调的‘变数   ’还有那些没有固定结果的□例而言,就可以达到强调的效果了。      读这份文件的同时,你也会得到一套蛮有用的索引。假若是dvi、 postscript之   类的版本,索引的数字就是章节(section)的编号;如果是HTML的话,这些数字会   按顺序排列,你可以用滑鼠左键去连结相对的索引内容;如果你看的是纯文字版   本的话, 数字就只是数字,没别的含意;建议你赶快升级为妙哩!      我用的shell是Bourne shell(不是C shell),举的例子自然是Bourne shell的   语法。如果你用的是C shell的话,设定环境变数的语法会像下面这样:   % setenv FOO bar   要是用Bourne shell的话,我会这样子写:   $ FOO=bar; export FOO   如果提示符号显示的是井字符号#而不是钱字符号 $的话,很有可能这个命令是只   适用於root而已。当然啦,要是你试了这些□例,结果弄得你的系统发生灾变,   我可是一点责任也不会负的喔!祝好运!:-)      11/8/97译. 5/13/98修订   2. 东东在哪儿?2.1 GCC-HOWTO在哪儿?   这份文件是Linux HOWTO系列之一,换句话说,你可以在所有存放Linux HOWTO文   件的网站上面找到她的芳踪,例如   [3]http://sunsite.unc.edu/pub/linux/docs/HOWTO/。HTML的版本(可能会是较   新的版本)可以从   [4]http://ftp.linux.org.uk/~barlow/howto/gcc-howto.html上面抓下来。   2.2 GCC相关的资料又在哪儿?   标准的gcc说明文件是随附在发行的原始码(source distribution)内(往下看就   有了!),里头有textinfo与.info两种档案。要是你的网路连接速率够快,或是   有一片cdrom,不然,有高度的耐心也成,你可以自己把它untar,然後再把相对   应的位元一一拷贝到/usr/info的目录底下。假如你的条件与上述的不符,不妨到   [5]tsx-11站上去参观参观。不过,我想,没有必要老是惦记著最新的版本吧!      libc的文件说明有两种来源。一种是GNU libc,以.info的格式储存,除了stdio   之外,其馀Linux libc的说明都相当的详尽精确。另一种可以在Linux的archive   [6]manpages上找到系统呼叫(system call)(第2节)与libc函数(function)   (第3节)的文件说明。   2.3 GCC   解答有二:      (a)你可以在 [7]ftp://tsx-11.mit.edu:/pub/linux/packages/GCC/的网站上找   到 正式的Linux GCC发行系统(distribution),而且是已经编译好的可执行档。   当我在写这份文件时,2.7.2(gcc-2.7.2.bin.tar.gz)是最新的版本。      (b)自由软体基金会(Free Software Foundation)所发布的GCC最新原始码可以   从网站 [8]GNU archives上取得。没有必要非得与上述的版本一致才行,不过这   个版本的确是目前最新的。Linux GCC的维护网友(maintainers)让你可以很轻松   的自行编译这个最新的版本。configure命令稿(script)会帮你自动设定好所有该   做的事情。建议你有空不妨到 [9]tsx-11看看,说不定会有修正的版本是你会想   要用的。      如果想要编写出一些有用的软体(不是我罗唆,还是有不少没啥用途的软体在网   路上四处流窜。),下面这一小节所谈的也是你需要的:   2.4 C程式馆与标头档   该选哪一套程式馆是取决於(i)你的系统是ELF的或是a.out的;(ii)你希望你的系   统变成哪一种?如果你是从libc 4升级到libc 5,那麽给你一个良心的建议,先   去看看ELF-HOWTO再说。你一定会问,在ELF文件的哪儿呢?嘿!嘿!不偏不倚,   就差不多跟这份文件相同的位置。网站 [10]tsx-11上面可以找到你想要的。      libc-5.2.18.bin.tar.gz          --- ELF共享程式馆(ELF shared library images),静态程式馆          (static libraries)与标头档(针对C语言与数学程式馆)。             libc-5.2.18.tar.gz          ---libc-5.2.18.bin.tar.gz的原始码。这个档案你也需要,因为.bin.套          件(package)含有必需的标头档。如果此时你正犹豫不决,不晓得是老身          亲自下海,动手编译C程式库比较好;还是直接用人家编译好的二进位          档(binaries)就可以了。有这种困扰的人,来,看我的嘴形:用人家编译          好的二进位档不就解决了嘛!只有在你想要NYS或是shadow password的情          况下,才需要自己的手来推动摇篮。             libc-4.7.5.bin.tar.gz          --- 这个档案是a.out的共享程式库(shared library images)与静态程式          库,用途是为了与前述的libc 5套件共存共荣而设计的,不过除非你想要          继续使用a.out的程式或是继续发展a.out的程式,不然的话,是不需要它          的。          2.5 有关联的工具 (as, ld, ar, strings etc)   到目前为止,与之前所谈的都一样,从网站 [11]tsx-11上,就可以找到这些工具   程式。目前的版本是binutils-2.6.0.2.bin.tar.gz。      需要注意的是binutils只适用於ELF,而且目前libc的版本也都是属於ELF的;当   然啦,习惯a.out的人如果有个ELF的libc与a.out的libc联合起来一起使用,这对   他们来讲是再好不过的美事了。不可否认的,C程式馆的发展正以坚决的脚步迈   向ELF的格式,除非你真的有很好的理由,需要a.out的东东,不然啊,大家都会   鼓励你勇於突破,趁早加入锐不可挡的大潮流。      11/9/97译   3. GCC的安装与GCC的设定3.1 GCC的版本

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -