我写了一个静态库:libA.a.我有另一个名为B.o的应用程序。 B.o没有使用libA.a中的任何函数。我想将libA.o组合到B.o中,然后当B.o运行时,我可以通过其他方法在libA.a中调用一些东西。
我写这样的makefile:gcc B.c -o B.o -lA -u symbol_A
。这里-u来自GCC手册:
http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
建议使用-u强制链接未使用的库,而symbol_A是libA.a中的某个符号
但它不起作用。链接后,我在B.o中找不到任何LibA.a的东西。
愿任何人给我一些提示吗?
p.s我在Windows下使用GCC 3.4.4,eclipse + CDT,而B.o将在linux下部署。
答案 0 :(得分:1)
GCC对-u
标志的解释意味着以下内容:
如果你有一个符号aka变量或在你的来源中定义的函数告诉 海湾合作委员会假装它是未定义的,所以需要定义这样的变量或 您正在链接的库中的函数。
因此,如果B.c
中没有任何内容可以在libA.a
中定义,-u
标记将无法帮助您,因为symbol_A
不需要B.c
并且使用相同的标记B.o
,因此将被忽略。