GCC命令行参数挑剔

Max*_*xpm 7 command-line gcc g++ command-line-arguments

GCC对接受其参数的顺序非常挑剔:

# Works.
g++ Foo.cpp -L. -I. -lBar -o Foo

# Linker errors.
g++ -o Foo -I. -L. -lBar Foo.cpp
Run Code Online (Sandbox Code Playgroud)

具体来说,命令行选项的排序要求是什么?

gee*_*aur 7

库是根据需要根据需要加载的,因此提供其他东西所需符号的库必须遵循其他内容.这是历史性的; 可以说现代系统应该自动解决符号,合理地处理循环(这是规则的原因;你通过按顺序指定库并根据需要多次手动打破了依赖循环),但g++遵循传统规则,因此它将与供应商一起工作ld秒.(GNU ld在任何地方都不起作用,因此不可能依赖它来解决符号依赖性循环.即使在GNU ld工作的平台上也存在引导问题.)同样,必须在其中指定其他面向链接器的选项.相对于它们影响的事物的正确顺序(例如,-L选项必须位于指定目录中的库之前;如果一个目录中的库影响标准目录中的同名库,这可能很重要).