使用linux中的其他库创建共享库

时间:2009-03-21 02:39:06

标签: c linux linker

我有一个共享库,说“libeval.so”。我在我的项目中使用它来创建名为“lidpi.so”的更多共享库。名为“libdpi.so”的库由工具使用。现在,此工具无法查看“libdpi.so”以外的任何其他库。我使用“libeval.so”中存在的函数调用很少,而这些调用在“libdpi.so”中不存在。 gcc中是否有任何开关,或者有什么可以克服这个问题。

1 个答案:

答案 0 :(得分:3)

如果libdpi.so设计为可以打开libeval.so,那么您的程序只需要了解libdpi.so

具体来说,libdpi.so应该有一些调用dlopen的函数,可能是这样的:

dlopen("path/to/libdpi.so", RTLD_LAZY);

然后libdpi.so中的其他功能可以与libeval.so对接。

编辑:要构建共享库,请使用以下命令:

gcc -shared -o libdpi.so [list of object files to go in libdpi.so]

注意:构建对象时,请使用带有gcc的-fPIC命令参数,如下所示:

gcc -fPIC -o foo.o foo.c