2011-03-20 41 views
3
gcc -o fig fig.c -I./include ./lib/libmylib.a -g 

gcc -g fig.c -o fig -I./include ./lib/libmylib.a 

gcc -g -o fig fig.c -I./include ./lib/libmylib.a 

看来gcc接受不同种类的序列。 但是,什么是不可接受的序列?争论的顺序是否重要?使用gcc时,参数的顺序是否重要?

+0

gcc的标志处理类似于任何现代linux命令的标志处理,没什么特别的。 – Drakosha 2011-03-20 14:41:58

+0

您通常会在构建系统的单独步骤中编译和链接。 – 2011-03-20 14:42:56

+0

@Drakosha:这不是事实。从示例中可以看出,它将接受混合的选项和参数,这实际上非常不寻常。 – Cascabel 2011-03-20 15:06:16

回答

4

如果您指定-static链接,则一个重要的序列就是您放置库的位置。基本上,如果您选择静态链接库,应在代码后指定库,因为GCC将首先扫描外部库依赖项的代码,然后检查要引入的库。如果您之前指定了库需要它们的代码,GCC将扫描并确定不需要库,并且最终会出现链接器错误。

+0

由于这个错误我刚刚经历了很多痛苦,最后发现它是由于参数顺序。到处寻找,我发现了你的答案,非常感谢,在一个平行的宇宙中,也许不是我,而是另外一种方式。 – 2011-05-19 06:47:11

相关问题