我试图在Mac上使用OpenMP

编译后,运行二进制文件时,

我懂了

dyld: Library not loaded: @rpath/libomp.dylib
  Referenced from: ./lab1
  Reason: image not found
[1]    64552 trace trap  ./lab1


我用otool找出了期望的路径。

otool -L lab1
lab1:
        @rpath/libomp.dylib (compatibility version 5.0.0, current version 5.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)


该必需的库libomp.dylib位于路径/usr/local/opt/llvm/lib

如何使二进制文件可以找到它?

最佳答案

尝试使用CMake POST_BUILD操作将所需的路径添加到可执行文件的rpath中:

add_custom_command(TARGET lab1
    POST_BUILD COMMAND
    ${CMAKE_INSTALL_NAME_TOOL} -add_rpath /usr/local/opt/llvm/lib
    $<TARGET_FILE:lab1>)


仅当lab1是使用add_executable创建的CMake可执行目标时,此方法才有效。

关于c++ - 如何使用CMake正确设置动态库路径?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43289965/

10-09 06:35