GCC LD中文手册:完全版连接器指南

5星 · 超过95%的资源 需积分: 42 426 下载量 43 浏览量 更新于2024-07-31 11 收藏 517KB DOC 举报
"GCC LD中文手册(完整版,附目录)" 是一份详尽的文档,主要涵盖LD命令行选项和连接脚本的基本语法。这份手册不仅提供了全面的LD使用指南,还整理了目录,便于用户查找和学习相关联的内容。 在GCC编译系统中,LD是链接器的重要组成部分,它负责将编译后的目标文件和库合并成可执行程序或共享库。手册的【部分内容】展示了LD的各种命令行选项,这些选项控制着链接过程的行为: 1. `-aKEYWORD`:此选项用于设置链接器特定的关键词,允许用户自定义链接器的行为。 2. `-AARCHITECTURE`和`--architecture=ARCHITECTURE`:这两个选项指定目标架构,确保链接过程中生成的输出文件与指定的处理器架构兼容。 3. `-bINPUT-formAT`和`--format=INPUT-formAT`:它们用于指定输入文件的格式,例如COFF、ELF等。 4. `-cMRI-COMMANDFILE`:这个选项用于指定MRI兼容的连接命令文件,通常用于嵌入式系统。 5. `-d`, `-dc`, `-dp`:这些选项通常涉及调试信息的处理,但具体用途可能因版本不同而略有差异。 6. `-eENTRY`和`--entry=ENTRY`:指定程序的入口点,即程序运行时的第一个执行指令。 7. `-E`和`--export-dynamic`:使动态符号表中的所有符号在可执行文件中可见,常用于动态链接库。 8. `-EB`和`-EL`:分别指示链接器生成大端和小端格式的对象文件,影响默认输出格式。 9. `-g`:虽然在某些工具中表示生成调试信息,但在LD中可能没有实际效果。 10. `-i`和`-r`:这两个选项都是为了进行增量链接,生成可重定位的目标文件。 11. `-initNAME`:指定初始化函数,用于程序启动时执行。 12. `-lARCHIVE`和`--library=ARCHIVE`:引入库文件,例如`-lc`引入C库。 13. `-M`和`--print-map`:打印链接映射,显示链接过程中的段分配情况。 14. `-n`和`--nmagic`:禁止任何位置独立代码优化,如在可执行文件中设置文本段不可写。 15. `-N`和`--omagic`:设置魔术标志,允许文本段可写,且数据段相对于可执行文件的起始地址。 16. `--no-omagic`:取消`-N`的效果。 17. `-oOUTPUT`和`--output=OUTPUT`:指定输出文件的名称。 18. `-OLEVEL`:可能用于设置链接优化级别,具体取决于链接器版本。 19. `-q`和`--emit-relocs`:保留目标文件中的重定位信息。 20. `-RFILENAME`和`--just-symbols=FILENAME`:只从指定文件中获取符号信息。 21. `-s`和`--strip-all`:移除所有符号信息,生成精简的可执行文件。 22. `-S`和`--strip-debug`:仅移除调试符号信息,保留其他符号。 23. `-t`和`--trace`:打印链接器处理的所有输入文件名,便于跟踪链接过程。 24. `-TSCRIPTFILE`和`--script=SCRIPTFILE`:指定自定义连接脚本,以精细控制链接过程。 25. `-uSYMBOL`和`--undefined=SYMBOL`:确保链接时指定的符号未被定义,以便在链接时处理外部引用。 26. `-Ur`:可能用于处理重定位。 27. `--unique[=SECTION]`:使指定节(或所有节)的符号在输出文件中具有唯一性。 28. `-v`,`--version`和`-V`:打印链接器的版本信息。 29. `-x`和`--discard-all`:删除所有本地符号,生成更小的可执行文件。 连接脚本是控制链接过程的另一种方式,它们允许用户更精确地指定如何分配内存段、链接顺序、重定位等。连接脚本的语法和使用也在手册中有所介绍,包括如何定义和控制节区、如何指定数据布局等。 这份完整的GCC LD中文手册对开发者来说是一份宝贵的参考资料,帮助他们理解和定制链接过程,解决链接时遇到的问题,并优化最终的可执行文件或库的生成。通过深入学习这些选项和脚本语法,开发者能够更好地掌握GCC工具链的高级用法,提升软件开发效率和质量。