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
解决步骤
- git clone https://github.com/lapesd/libgomp.git
- cd libgomp/src/libgomp && mkdir build && cd build
- ../configure –host=microblazeel-xilinx-linux-gnu CC=microblazeel-xilinx-linux-gnu-gcc CXX=microblazeel-xilinx-linux-gnu-g++ –disable-multilib
- make -j16
- cp -d .lib/libgomp.so* (工具链的sysroot/lib下)
- cp libgomp.spec (工具链的sysroot/lib下)