【问题标题】:GCC not linking libraries. It compiles, but the resulting library is missing necessary references [duplicate]GCC 没有链接库。它可以编译,但生成的库缺少必要的引用 [重复]
【发布时间】:2012-10-05 04:07:40
【问题描述】:

可能重复:
GCC C++ Linker errors: Undefined reference to 'vtable for XXX', Undefined reference to 'ClassName::ClassName()'

好吧,我正在尝试编译一个由 2 个对象文件和一个静态库组成的共享对象库。我正在链接库,但只有 Lua 实际用于 MY 对象,其他对象用于 .a 文件。

这是 IDE 生成的链接步骤:

g++ -shared  obj/Debug/GL/Window/Window.o obj/Debug/main.o   -o bin/Debug/libLOOGL.so -lX11 -lXrandr -lGL -llua5.2  /home/matt/Desktop/Development/LOOGL/lib/bin/OOGL.a

这是 ldd 对结果的输出:

ldd loogl.so
  linux-vdso.so.1 =>  (0x00007fff30b3e000)
  liblua5.2.so.0 => /usr/lib/x86_64-linux-gnu/liblua5.2.so.0 (0x00007f521b53e000)
  libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f521b23e000)
  libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f521b027000)
  libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f521ac68000)
  libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f521a96e000)
  libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f521a769000)
  /lib64/ld-linux-x86-64.so.2 (0x00007f521b991000)

必要的库没有链接,结果不会运行,它缺少引用。

【问题讨论】:

    标签: c++ linux gcc linker dynamic-linking


    【解决方案1】:

    链接行上库的顺序很重要:

    试试:

    g++ -shared  obj/Debug/GL/Window/Window.o obj/Debug/main.o   -o bin/Debug/libLOOGL.so /home/matt/Desktop/Development/LOOGL/lib/bin/OOGL.a -lX11 -lXrandr -lGL -llua5.2  
    

    【讨论】:

    • 该死的,我们走了。 Code::Blocks 不想这样做,所以我想我只需要编写一个 make 文件。
    猜你喜欢
    • 2023-03-16
    • 2021-10-18
    • 2016-02-12
    • 2015-09-01
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    相关资源
    最近更新 更多