装载机给了我这个错误。我在运行Ubuntu 15.04。
当我这样做时:find/usr-type f-name“libGL*”
我得到:

/usr/lib/nvidia-352/libGLESv1_CM.so.352.63
/usr/lib/nvidia-352/libGLESv2.so.352.63
/usr/lib/nvidia-352/libGL.so.352.63
/usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10.0
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.10.0
/usr/lib32/nvidia-352/libGL.la
/usr/lib32/nvidia-352/libGLESv1_CM.so.352.63
/usr/lib32/nvidia-352/libGLESv2.so.352.63
/usr/lib32/nvidia-352/libGL.so.352.63

所以,如果我知道哪个是正确的,我可以用-L“那个文件”把它包括进去
我怎么知道哪个是对的?谢谢

最佳答案

根据您要链接32位还是64位可执行文件,您需要/usr/lib32/nvidia-352/libGL.so.352.63或/usr/lib/nvidia-352/libGL.so.352.63。当链接器找不到-lGL时,它将查找libGL.a或libGL.so。。
另外,您只需要用-L指定目录,比如-L/usr/lib/nvidia-352
最后,即使这样可以链接,在运行时仍然找不到库,除非在运行可执行文件之前设置了LD_library_PATH,或者在link命令中也添加了-Wl,-rpath,/usr/lib/nvidia-352(后者将路径嵌入到可执行文件中)。

10-06 15:41