cmake,无法运行与预编译共享库链接的可执行文件

奥列格

这是我的项目结构:

➜  helloWorld ls                                                                                                                                                                                                           
[18/11/29|11:19AM]
CMakeLists.txt    cmake-build-debug main.cpp          third_parties
➜  helloWorld
➜  helloWorld ls third_parties/say                                                                                                                                                                                         
[18/11/29|11:19AM]
compilesaylib.sh libsaylib.dylib  saylib.cpp       saylib.h
➜  helloWorld

CMakeLists.txt 看起来像这样:

cmake_minimum_required(VERSION 3.12)
cmake_policy(SET CMP0015 NEW)
SET(CMAKE_SYSTEM_NAME Darwin)
project (myproject)

include_directories(${CMAKE_SOURCE_DIR}/third_parties/say)

file(GLOB LIBRARIES "third_parties/say/*.dylib")
message("LIBRARIES = ${LIBRARIES}")

add_executable(myproject main.cpp)
target_link_libraries(myproject ${LIBRARIES})

主.cpp:

#include <iostream>
#include "saylib.h"

int main() {
    say("Hi there!");
    return 0;
}

我得到的错误是下一个:

➜  cmake-build-debug ./helloWorld                                                                                                                                                                                          
[18/11/29|10:56AM]
dyld: Library not loaded: libsaylib.dylib
  Referenced from: /Users/oleg/CLionProjects/helloWorld/cmake-build-debug/./helloWorld
  Reason: image not found
[1]    17995 abort      ./helloWorld
➜  cmake-build-debug

当我在可执行文件上使用 otool 时,我得到了这个:

➜  cmake-build-debug otool -L helloWorld                                                                                                                                                                                   
[18/11/29|10:56AM]
helloWorld:
    libsaylib.dylib (compatibility version 0.0.0, current version 0.0.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.4)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.200.5)
➜  cmake-build-debug

为了解决这个问题,我需要做两件事之一:

  1. 将 DYLD_LIBRARY_PATH 设置为指向我的库
  2. 将我的lib复制到可执行目录

还有其他选择吗?有没有办法通过 cmake 设置此路径以运行可执行文件而不会出现此错误?

也许我不仅可以将 lib 名称 libsaylib.dylib 设置为可执行文件的依赖项,还可以使用 cmake 和 $CMAKE_CURRENT_SOURCE_DIR 将绝对路径设置为 /usr/lib/libc++.1.dylib?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在将共享库层次结构链接到可执行文件时,cmake链接错误

来自分类Dev

CMake添加和删除宏定义以编译共享库/可执行文件

来自分类Dev

scp之后C ++可执行文件无法链接到共享库

来自分类Dev

cmake-是否可以在运行时将可执行文件链接到具有相对路径的共享库?

来自分类Dev

链接可执行文件中的共享库与另一个共享库

来自分类Dev

CMAKE:错误的链接器(g ++)用于可执行文件到CUDA库的链接

来自分类Dev

CMAKE:错误的链接器(g ++)用于可执行文件到CUDA库的链接

来自分类Dev

具有多个可执行文件的CMake共享库

来自分类Dev

CMake没有创建可访问我的共享库的可执行文件

来自分类Dev

CMake没有创建可访问我的共享库的可执行文件

来自分类Dev

是否可以绕过已经编译的可执行文件所需的共享库依赖关系?

来自分类Dev

使用“ -fPIC”标志编译可执行文件(无共享库)

来自分类Dev

用CMake编译静态可执行文件

来自分类Dev

Cmake:加载可执行文件时,动态链接器如何查找动态库?

来自分类Dev

多余的链接/库在编译过程中如何影响可执行文件的输出?

来自分类Dev

Linux:可执行文件找不到共享库

来自分类Dev

如何帮助可执行文件找到共享库?

来自分类Dev

更改Linux可执行文件的特定共享库

来自分类Dev

为什么某些共享库是可执行文件,为什么以及如何运行?

来自分类Dev

Eclipse 找不到编译的可执行文件的库

来自分类Dev

如何运行Nuitka编译的Python可执行文件

来自分类Dev

如何强制可执行文件链接动态库

来自分类Dev

将可执行文件链接到第三方依赖的共享库时的C ++ CMake未定义引用

来自分类Dev

GCC无法编译为可执行文件

来自分类Dev

无法链接到主可执行文件

来自分类Dev

Windows上的PyInstaller可执行文件由于PortAudio库问题而无法运行(OSError)

来自分类Dev

可执行文件无法正常运行[Linux]

来自分类Dev

.JAR可执行文件无法正常运行

来自分类Dev

根本无法运行可执行文件

Related 相关文章

  1. 1

    在将共享库层次结构链接到可执行文件时,cmake链接错误

  2. 2

    CMake添加和删除宏定义以编译共享库/可执行文件

  3. 3

    scp之后C ++可执行文件无法链接到共享库

  4. 4

    cmake-是否可以在运行时将可执行文件链接到具有相对路径的共享库?

  5. 5

    链接可执行文件中的共享库与另一个共享库

  6. 6

    CMAKE:错误的链接器(g ++)用于可执行文件到CUDA库的链接

  7. 7

    CMAKE:错误的链接器(g ++)用于可执行文件到CUDA库的链接

  8. 8

    具有多个可执行文件的CMake共享库

  9. 9

    CMake没有创建可访问我的共享库的可执行文件

  10. 10

    CMake没有创建可访问我的共享库的可执行文件

  11. 11

    是否可以绕过已经编译的可执行文件所需的共享库依赖关系?

  12. 12

    使用“ -fPIC”标志编译可执行文件(无共享库)

  13. 13

    用CMake编译静态可执行文件

  14. 14

    Cmake:加载可执行文件时,动态链接器如何查找动态库?

  15. 15

    多余的链接/库在编译过程中如何影响可执行文件的输出?

  16. 16

    Linux:可执行文件找不到共享库

  17. 17

    如何帮助可执行文件找到共享库?

  18. 18

    更改Linux可执行文件的特定共享库

  19. 19

    为什么某些共享库是可执行文件,为什么以及如何运行?

  20. 20

    Eclipse 找不到编译的可执行文件的库

  21. 21

    如何运行Nuitka编译的Python可执行文件

  22. 22

    如何强制可执行文件链接动态库

  23. 23

    将可执行文件链接到第三方依赖的共享库时的C ++ CMake未定义引用

  24. 24

    GCC无法编译为可执行文件

  25. 25

    无法链接到主可执行文件

  26. 26

    Windows上的PyInstaller可执行文件由于PortAudio库问题而无法运行(OSError)

  27. 27

    可执行文件无法正常运行[Linux]

  28. 28

    .JAR可执行文件无法正常运行

  29. 29

    根本无法运行可执行文件

热门标签

归档