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