Apple Clang编译带OpenMP的oofem时出现x86_64架构符号未找到错误
你遇到的链接报错是macOS平台使用Homebrew安装的libomp编译时,仅配置了头文件与库搜索路径、未显式指定链接libomp库导致的,可按以下步骤解决:
- 第一步:清空原有CMake缓存,避免旧配置干扰,进入你的编译目录执行:
rm -rf ./* - 第二步:使用以下命令重新执行CMake配置,显式传入OpenMP相关编译与链接参数(适用于x86_64架构Mac):
cmake .. \ -DCMAKE_CXX_FLAGS="-Xpreprocessor -fopenmp -I/usr/local/opt/libomp/include" \ -DCMAKE_EXE_LINKER_FLAGS="-L/usr/local/opt/libomp/lib -lomp" \ -DCMAKE_SHARED_LINKER_FLAGS="-L/usr/local/opt/libomp/lib -lomp" \ -DUSE_OPENMP=ON
oofem项目的OpenMP编译开关为USE_OPENMP,必须显式开启才能启用相关编译逻辑。
- 若上述配置仍无法识别OpenMP,可直接指定FindOpenMP模块的对应参数强制链接:
cmake .. \ -DOpenMP_CXX_INCLUDE_DIR=/usr/local/opt/libomp/include \ -DOpenMP_CXX_LIB_NAMES=omp \ -DOpenMP_omp_LIBRARY=/usr/local/opt/libomp/lib/libomp.dylib \ -DUSE_OPENMP=ON
完成配置后执行make即可正常完成编译链接。
内容的提问来源于stack exchange,提问作者Saeid
相关产品推荐
相关产品推荐

