如何以编程方式查找OpenMP共享库的路径?

时间:2013-09-19 00:47:19

标签: gcc openmp

当我想在我的机器上使用OpenMP时,我用

编译一个C程序
gcc -fopenmp

并包含

-lgomp

作为链接器标志。但是,要实际找到OpenMP .so文件,我还需要包含libgomp.so的路径:

-L/usr/lib/gcc/x86_64-linux-gnu/4.6.3/

显然,这很脆弱,无法在机器上运行。有没有办法查询gcc,找出它放在libgomp.so的位置?

2 个答案:

答案 0 :(得分:2)

你真的应该让运行时链接器为你找到动态库。如果包含.so的目录位于/etc/ld.so.conf(或者等同于许多现代Linux发行版中,/etc/ld.so.conf.d中的文件中)并且您以root身份运行ldconfig,运行时链接程序应该能够找到.so

如果要在运行时扩充/更改已编译的链接器路径(通过-L提供给编译时链接器),则有两个相关的环境变量LD_LIBRARY_PATH和{{1} }:

LD_PRELOAD

答案 1 :(得分:2)

libgomp.so是GCC支持基础结构的一部分,不能用作单独的库。您需要在命令行中指定-fopenmp,以便启用OpenMP支持并自动链接库。只需使用gcc -fopenmp -o executable file1.o file2.o ...代替ld即可链接您的可执行文件。