即使使用“-ldl”,g++ 仍会因对符号“dlclose@@GLIBC_2.2.5”的未定义引用而失败

即使使用“-ldl”,g++ 仍会因对符号“dlclose@@GLIBC_2.2.5”的未定义引用而失败

我正在尝试使用 scons 编译一个包含 GLAD 和 SDL2 的程序(尽管 scons 并不真正相关,因为问题在于 g++)

scons 运行以下命令来编译部分程序:

g++ -o out/cpptest bin/src/MainTest.o bin/src/main.o -L/usr/local/lib -Lbin/lib -ldl -lm -lGL -lGLU -lX11 -lpthread -lXi -lXrandr -lXxf86vm -lXinerama -lXcursor -lrt -lglad -lSDL2 -pthread

g++ 返回以下错误消息:

/usr/bin/ld: bin/lib/libglad.a(glad.c.o): undefined reference to symbol 
'dlclose@@GLIBC_2
.2.5'
 /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libdl.so: error 
 adding symbols: DSO missing from command line
 collect2: error: ld returned 1 exit status

如果能得到一些建议我将非常感激。

还请注意存在以下标志:

    -ldl -lm -lpthread -pthread

答案1

您只需添加标志“-Wl 和 --start-group”

对于 scons 添加 LINKFLAGS=['-Wl,--start-group']。

参考: https://stackoverflow.com/questions/45135/why-does-the-order-in-which-libraries-are-linked-sometimes-cause-errors-in-gcc

相关内容