编译问题:
/usr/bin/ld: ../../3rdParty/lib/libluajit.a(lj_clib.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
//usr/lib64/libdl.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[1]: *** [GameServer.make:233: ../../../server/bin/Debug/GameServer] Error 1
make: *** [Makefile:47: GameServer] Error 2
解决方法:
这个错误通常表示链接器在构建时找不到 dlclose() 函数的定义,并且提示缺少 libdl 库。dlclose() 是一个动态链接库的函数,需要与 libdl 库一起链接。
为了解决这个问题,你可以尝试在链接命令中添加 -ldl 选项来链接 libdl 库。具体来说,你需要修改链接命令,类似以下示例:
g++ -o myprogram myprogram.o -L/path/to/libs -lmylibrary -ldl
其中,-ldl 用于链接 libdl 库。请确保该选项位于链接命令的正确位置,即在主程序之后。
如果你的 Makefile 中有类似于 LDFLAGS 或 LDLIBS 的变量,你也可以将 -ldl 添加到其中,例如:
LDFLAGS += -ldl
这样,在执行 make 命令时就会自动包含 -ldl 选项。
完成这些步骤后,重新运行构建命令,该错误应该会被解决。
如果问题仍然存在,可能是因为缺少 libdl.so 文件或版本不匹配。请确保正确安装了 libdl.so 并且版本与当前系统匹配。
如果你还有其他疑问,请随时提问。










