gpt4 book ai didi

c++ - 如何使 CMake 实际上链接到它用 find_library 找到的库

转载 作者:太空宇宙 更新时间:2023-11-04 13:22:26 24 4
gpt4 key购买 nike

我在默认安装了 glew 1.10 的 Ubuntu 14.04 上。我想使用最新的 glew 1.13,但是 sudo apt-get remove libglew1.10 不是一个选项,因为 ubuntu-desktop 依赖它,我不小心做了一次,我不得不进入恢复模式重新安装所有东西。

我下载了最新的 glew 1.13 和 sudo make install。 glew 1.13 库安装在/usr/lib64/libGLEW.so 下。旧的 1.10 仍在/usr/lib/x86_64-linux-gnu/libGLEW.so 中。/usr/include/GL/glew.h 和/usr/include/GL/wglew.h 中的头文件已替换为 1.13 中的头文件。

在我的 FindGLEW.cmake 中,它在我运行 cmake 后成功找到了正确的 libGLEW.so ..

find_library(GLEW_LIBRARY NO_DEFAULT_PATH
NAMES
GLEW glew
PATHS
/usr/lib64
DOC "The GLEW library"
)

可以通过 ccmake .. 验证,GLEW_LIBRARY 部分确实显示/usr/lib64/libGLEW.so。

然而,当我编译代码时,我仍然从只能从 glew 1.13 获得的方法中得到 undefined reference 错误,进一步检查 ldd mylib.so,它显示

libGLEW.so.1.10 => /usr/lib/x86_64-linux-gnu/libGLEW.so.1.10 (0x00007f10d130b000)

这意味着它仍然以某种方式链接到 1.10 中的旧共享库,并将目录搜索优先级设置为 etc/ld.so.conf.d/* 高于默认情况下由 find_library 指定的路径。我该如何解决这个问题?

附带说明一下,在没有安装 libglew1.10 和 ubuntu-desktop 的服务器上,完全相同的代码和完全相同的 CMakeLists 可以毫无问题地编译。

最佳答案

ldd 和 ld 都将运行时共享库​​加载程序信息考虑在内(通过 LD_LIBRARY_PATH env var)。

因此,请确保在链接您的程序之前执行以下操作:

export LD_LIBRARY_PATH=/usr/lib64/:$LD_LIBRARY_PATH

更多信息:http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html

关于c++ - 如何使 CMake 实际上链接到它用 find_library 找到的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34643467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com