找不到 -lGL 尽管 ldconfig 显示它存在?

找不到 -lGL 尽管 ldconfig 显示它存在?

我安装了 nvidia-current 用于 CUDA 开发,其中包括libGL.so

sudo ldconfig -v显示此输出:

...
/usr/lib/nvidia-current:
    libnvidia-compiler.so.195.36.24 -> libnvidia-compiler.so.195.36.24
    libcuda.so.1 -> libcuda.so.195.36.24
    libXvMCNVIDIA_dynamic.so.1 -> libXvMCNVIDIA.so.195.36.24
    libnvidia-cfg.so.1 -> libnvidia-cfg.so.195.36.24
    libGL.so.1 -> libGL.so.195.36.24
    libnvidia-tls.so.1 -> libnvidia-tls.so.195.36.24
    libOpenCL.so.1 -> libOpenCL.so.1.0.0
    libGLcore.so.1 -> libGLcore.so.195.36.24
...

为什么链接器找不到该库?

如果我从尝试编译的目录中运行 make,链接器将找不到。但如果我仅使用标志运行gcc或,它似乎可以正常工作。我得到:ld-lGL

/usr/lib/../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status

在我看来它正在工作...但不能与 make 一起工作......

答案1

默认情况下,链接器不会查找非标准目录。您需要/usr/lib/nvidia-current使用-L标志来确保它正在查找。

此外,您必须安装开发文件。libGL.so必须存在指向库的正确版本的符号链接。但一般来说,这应该针对标准 mesa GL 库进行,并且应在运行时使用 nvidia 文件。

相关内容