【发布时间】:2015-08-24 20:34:52
【问题描述】:
我正在尝试将 .so 文件与 .so 文件链接,但在我的 makefile g++/c++ 中没有运气。
基本上我有一堆我想用作库的对象,然后我有一个我想链接到所述库的共享对象。我尝试在运行时加载共享对象,但出现未定义符号错误。
例如:
MyLibraryObjects=LibObject1.o \
LibObject2.o \
LibObject3.o
MyInterfaceObjects=InterfaceObject1.o \
InterfaceObject2.o
CXXFLAGS=-fPIC -shared -I$(MyIncludeDir)
MyLibrary: $(MyLibraryObjects)
g++ -fPIC -shared -o MyLibrary.so $(MyLibraryObjects) -ldl
MyInterface: $(MyInterfaceObjects)
g++ -fPIC -shared -o MyInterface.so MyLibrary.so $(MyInterfaceObjects) -ldl
然后在运行时我加载 MyInterface.so 并且它不识别 LibObject1 构造函数。
如果我这样做,我可以让它工作:
MyInterface: $(MyInterfaceObjects)
g++ -fPIC -shared -o MyInterface.so $(MyInterfaceObjects) $(MyInterfaceObjects) -ldl
但这会重新链接所有库对象。我宁愿直接链接到一个 .so 库对象。所以不知道该怎么办。
【问题讨论】: