小编luc*_*luc的帖子

通过动态链接在Mac OSX上用OpenMP编译C ++

摘要

如何以可移植的方式在Mac OSX上使用OpenMP编译C ++代码?

有许多资料来源建议在OSX上使用OpenMP编译C ++的解决方案,例如:

他们中的大多数建议安装更新的LLVM / Clang(或GCC),而不是默认的Clang。在OSX 10.12.6(Sierra)上,使用LLVM(通过brew install llvm)对我有效。

但是,生成的二进制文件似乎不可移植。如果可能的话,我想提供一个二进制文件,这样我的用户就不必自己编译。

这是我尝试过的

运行otool -L my_binary收益

/usr/local/opt/llvm/lib/libomp.dylib (compatibility version 5.0.0, current version 5.0.0)
/usr/local/opt/llvm/lib/libc++.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)
/usr/lib/libc++abi.dylib (compatibility version 1.0.0, current version 307.2.0)
Run Code Online (Sandbox Code Playgroud)

前两行看起来并不像我可以将二进制文件交给某些用户,并希望它能工作。用户必须先安装LLVM。

因此,我发现install_name_tool可以改变这一点。参见https://blogs.oracle.com/dipol/dynamic-libraries,-rpath,-and-mac-os

因此,我跑了

cp /usr/local/opt/llvm/lib/libomp.dylib .
cp /usr/local/opt/llvm/lib/libc++.1.dylib .

install_name_tool -change /usr/local/opt/llvm/lib/libomp.dylib @executable_path/libomp.dylib my_binary
install_name_tool -change /usr/local/opt/llvm/lib/libc++.1.dylib @executable_path/libc++.1.dylib my_binary

install_name_tool -id "@loader_path/libomp.dylib" …
Run Code Online (Sandbox Code Playgroud)

c++ macos openmp dylib

5
推荐指数
1
解决办法
535
查看次数

标签 统计

c++ ×1

dylib ×1

macos ×1

openmp ×1