2010-06-18 53 views
0

如何在使用gcc/make构建共享对象sharedobj.so时如何告诉链接器静态链接libfoo.a。链接器选项在创建共享对象时静态链接lib * .a文件

我试图通过LDFLAG选项 LDFLAGS + = -W1 --whole - 归档-L /路径/到/ libfoo的-lfoo

我还试图通过LDFLAGS选项 LDFLAGS + = -W1,静态-L /路径/到/ libfoo的-lfoo

我还试图通过LDFLAGS选项 LDFLAGS + = -W1,Bstatic -L /路径/到/ libfoo的-lfoo

我有一个lso试图通过LDFLAGS的选项 LDFLAGS + = -W1,静态链接-L /路径/到/ libfoo -lfoo

我已经通读了很多链接,告诉我如何做到这一点,但目前还没有工作。

+0

建立sharedobj.so的规则以及make运行时规则产生的输出可能会有帮助 – 2010-06-18 12:44:35

回答

1

LDFLAGS只是auto(conf | crap)的一个特性,链接器从不看它。只要给在命令行的所有选项,如:

GCC obj1.o obj2.o ... -shared -o libfoo.so -L /路径/到/ lib目录-lbar

0

我不真的明白了,你想让静态库成为你共享的一部分吗?

然后它应该工作,当你将它作为一个依赖项添加 - 就像其他对象(.o)文件。

链接a.o B.O c.o staticlib.a到libsharedobj.so

+0

是的。这正是我想要做的。 – 2010-06-18 12:51:33

0

你可能会想到一个图书馆为对象(.o)文件的归档(.a)。您可以以类似的方式在链接器步骤中使用它来访问文件。

但是我不清楚,但是如果所有的档案将被包含在共享对象库(或exe)中或者只包含那些需要的部分 - 我的理解只是需要的,但我没有使用* nix位。对于.so,这可能意味着它不会包含和导出.so本身未使用的任何内容。