大多数选项可以通过编译器驱动程序的命令行传递到链接编辑器。通常,编译器选项和链接编辑器选项不会产生冲突。如果产生冲突,编译器驱动程序通常提供一种命令行语法,您可以使用该语法将特定选项传递到链接编辑器。也可以通过设置 LD_OPTIONS 环境变量为链接编辑器提供选项。
$ LD_OPTIONS="-R /home/me/libs -L /home/me/libs" cc -o prog main.c -lfoo |
链接编辑器解释 -R 和 -L 选项。这些选项位于从编译器驱动程序接收的任何命令行选项的前面。
链接编辑器解析整个选项列表,以查找任何无效选项或具有无效关联参数的任何选项。如果发现其中任何一种情况,则生成一条适当的错误消息。如果该错误被认为是致命错误,则链接编辑将终止。在以下示例中,链接编辑器通过检查捕获到非法选项 -X 和 -z 选项的非法参数。
$ ld -X -z sillydefs main.o ld: illegal option -- X ld: fatal: option -z has illegal argument `sillydefs' |
如果指定了某个需要关联参数的选项两次,则链接编辑器将产生适当的警告并继续进行链接编辑。
$ ld -e foo ...... -e bar main.o ld: warning: option -e appears more than once, first setting taken |
链接编辑器还会检查选项列表以查看是否存在任何致命的不一致性错误。
$ ld -dy -a main.o ld: fatal: option -dy and -a are incompatible |
处理完所有选项之后,如果未检测到任何致命错误状态,则链接编辑器将继续处理输入文件。
请参见附录 A,链接编辑器快速参考 以了解最常用的链接编辑器选项,并参见 ld(1) 以了解所有链接编辑器选项的完整说明。