-
- 1、下载openmp源码
- https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.6/openmp-14.0.6.src.tar.xz
-
- 2、下载ios.toolchain.cmake
- https://github.com/leetal/ios-cmake/tree/4.3.0
- 源码根目录创建toolchains目录,将ios.toolchain.cmake放入toolchains目录
-
-
- 3、进入到源码目录,执行下列操作
- sed -i'' -e '/.size __kmp_unnamed_critical_addr/d' runtime/src/z_Linux_asm.S
- sed -i'' -e 's/__kmp_unnamed_critical_addr/___kmp_unnamed_critical_addr/g' runtime/src/z_Linux_asm.S
-
- mkdir build
- cd build
- cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \
- -DPLATFORM=OS64 -DENABLE_BITCODE=1 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 \
- -DPERL_EXECUTABLE=/usr/local/bin/perl \
- -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF ..
-
-
- cmake --build . -j 12
- cmake --build . --target install
-
- 注意,编译模拟器的库使用下面的命令
- cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \
- -DPLATFORM=SIMULATOR64 -DENABLE_BITCODE=1 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 \
- -DPERL_EXECUTABLE=/usr/local/bin/perl \
- -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF ..
-
- 4、编译后的产物放在build/install文件夹中
-
- 5、将真机的库和模拟器的库使用lipo工具合并,
- lipo -create build_sim64/install/lib/libomp.a build_ios64/install/lib/libomp.a -output libomp.a
-
- build_sim64/install/lib/libomp.a build_ios64/install/lib/libomp.a 分别是模拟器和真机的库,输出库的路径 -output libomp.a
-
- lipo -info libomp.a验证
- Architectures in the fat file: libomp.a are: x86_64 arm64 说明有两个架构就是OK的
-
- 6、工程中引用头文件,增加编译选项 -Xclang -fopenmp
iOS和mac上原生没有支持openmp,通过编译,就可以在iOS和mac上使用,mac上编译比较简单,直接cmake,然后make就可以了。希望这个方法能帮助到大家