OpenMP 编译移植

OpenMP 编译移植

分类:Microblaze Openmp libgomp

OpenMP介绍

OpenMP (Open Multi-Processing)是一套支持跨平台共享内存方式的多线程并发的编程API,是使用C、C++和Fortran进行并发编程的一种强大方法。
目前,主流的C/C++编译器,比如GNU gcc ,Visual C++,甚至部分嵌入式编译工具链(如Riscv)都支持OpenMP,OpenMP已经作为了编译器的自带库。
在程序中需要#include <omp.h>
gcc编译的时候需要使用编译选项-fopenmp

遇到的问题

但是,在一些嵌入式环境中,比如,MicroBlazeel中,并不支持OpenMP。这是就需要对libgomp进行交叉编译了。
下面就是我用microblazeel-xilinx-linux-gnu-gcc使用编译选项-fopenmp来编译程序出现的错误:

microblazeel-xilinx-linux-gnu-gcc: error: libgomp.spec: No such file or directory
这里写图片描述

解决步骤

  1. git clone https://github.com/lapesd/libgomp.git
  2. cd libgomp/src/libgomp && mkdir build && cd build
  3. ../configure –host=microblazeel-xilinx-linux-gnu CC=microblazeel-xilinx-linux-gnu-gcc CXX=microblazeel-xilinx-linux-gnu-g++ –disable-multilib
  4. make -j16
  5. cp -d .lib/libgomp.so* (工具链的sysroot/lib下)
  6. cp libgomp.spec (工具链的sysroot/lib下)

猜你喜欢

转载自blog.csdn.net/ACMore_Xiong/article/details/79533658