大多数链接编辑器选项可以通过编译器驱动程序命令行传递。通常,编译器选项和链接编辑器选项不会产生冲突。如果产生冲突,编译器驱动程序通常会提供一种命令行语法,您可以使用该语法将特定选项传递到链接编辑器。此外,也可以通过设置 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
处理了所有选项之后,如果未检测到任何致命错误情况,链接编辑器将继续处理输入文件。