• iOS编译openmp


    1. 1、下载openmp源码
    2. https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.6/openmp-14.0.6.src.tar.xz
    3. 2、下载ios.toolchain.cmake
    4. https://github.com/leetal/ios-cmake/tree/4.3.0
    5. 源码根目录创建toolchains目录,将ios.toolchain.cmake放入toolchains目录
    6. 3、进入到源码目录,执行下列操作
    7. sed -i'' -e '/.size __kmp_unnamed_critical_addr/d' runtime/src/z_Linux_asm.S
    8. sed -i'' -e 's/__kmp_unnamed_critical_addr/___kmp_unnamed_critical_addr/g' runtime/src/z_Linux_asm.S
    9. mkdir build
    10. cd build
    11. cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \
    12. -DPLATFORM=OS64 -DENABLE_BITCODE=1 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 \
    13. -DPERL_EXECUTABLE=/usr/local/bin/perl \
    14. -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF ..
    15. cmake --build . -j 12
    16. cmake --build . --target install
    17. 注意,编译模拟器的库使用下面的命令
    18. cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \
    19. -DPLATFORM=SIMULATOR64 -DENABLE_BITCODE=1 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 \
    20. -DPERL_EXECUTABLE=/usr/local/bin/perl \
    21. -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF ..
    22. 4、编译后的产物放在build/install文件夹中
    23. 5、将真机的库和模拟器的库使用lipo工具合并,
    24. lipo -create build_sim64/install/lib/libomp.a build_ios64/install/lib/libomp.a -output libomp.a
    25. build_sim64/install/lib/libomp.a build_ios64/install/lib/libomp.a 分别是模拟器和真机的库,输出库的路径 -output libomp.a
    26. lipo -info libomp.a验证
    27. Architectures in the fat file: libomp.a are: x86_64 arm64 说明有两个架构就是OK的
    28. 6、工程中引用头文件,增加编译选项 -Xclang -fopenmp

    iOS和mac上原生没有支持openmp,通过编译,就可以在iOS和mac上使用,mac上编译比较简单,直接cmake,然后make就可以了。希望这个方法能帮助到大家

  • 相关阅读:
    Linux下VSCode的安装和基本使用
    网络协议
    【人工智能】【Python】Matplotlib基础
    JavaScript 68 JavaScript Browser BOM 68.1 JavaScript Window - 浏览器对象模型
    mysql 高性能搭建2-2: mysql5.7.29 主主复制+keepalived实现高可用
    python如何将日期字符串格式化年月日
    REACT 在组件之间共享状态
    软考系列(系统架构师)- 2011年系统架构师软考案例分析考点
    4.1 Redis哨兵模式
    Git全家桶及其常用命令
  • 原文地址:https://blog.csdn.net/zhouxuguang236/article/details/126472590