【问题标题】:Makefile: Can't link .so with .so, undefined symbol during runtimeMakefile:无法将 .so 与 .so 链接,运行时未定义的符号
【发布时间】: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 库对象。所以不知道该怎么办。

【问题讨论】:

    标签: c++ ubuntu makefile g++


    【解决方案1】:

    我的 .so 文件顺序错误,我把它移到了最后,它工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      • 2022-10-25
      • 2014-12-16
      • 1970-01-01
      • 2014-10-01
      • 2013-05-14
      • 2015-12-16
      相关资源
      最近更新 更多