static - Cmake:链接共享库

标签 static cmake libraries shared

我以前做过几次,但这次我被卡住了。我有一个可执行文件“myapp”和一个自己的共享库“mylib”。在我的 cmakelists 中,我有以下内容:

ADD_LIBRARY(mylib SHARED ${SOURCES_LIB})
INSTALL(TARGETS mylib DESTINATION .)
ADD_EXECUTABLE(myapp ${SOURCES_APP})
TARGET_LINK_LIBRARIES(myapp ${QT_LIBRARIES} mylib)
INSTALL(TARGETS myapp DESTINATION .)

一切都正确编译和链接,但是当我启动 myapp 时,出现以下错误:
error while loading shared libraries: libmylib.so: cannot open shared object file: No such file or directory

lib 和可执行文件存在于安装目录中。当我通过将上述 cmakelists 的第一行更改为:
ADD_LIBRARY(mylib STATIC ${SOURCES_LIB})

然后一切正常。

有谁知道我做错了什么?

最佳答案

在安装库和可执行文件的过程中,查找库的运行时路径将从可执行文件中剥离。因此,您的库必须位于运行时库搜索路径中。例如在 Linux 下,尝试在启动可执行文件时将 LD_LIBRARY_PATH 设置为包含已安装库的目录。

关于static - Cmake:链接共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8880802/

相关文章:

CMake 自动识别新的文件扩展名

python - Cmake 将 python 编译到构建文件夹中

macos - cmake 不断添加 std=gnu++11 选项

python - 使用 pip download -rrequirements.txt 的问题

c++ - 在 C++ 中创建全局静态的多个实例?

c - 有什么办法可以避免静态内存区域溢出吗?

java - 带通配符的静态导入

arrays - 如何在 Swift 中创建静态数组?

xcode - 如何在 OS X 静态库中包含 nib?

c - "make all"连续两次不 't return "使 : Nothing to be done for 'all' . "