当我想在我的机器上使用OpenMP时,我用
编译一个C程序gcc -fopenmp
并包含
-lgomp
作为链接器标志。但是,要实际找到OpenMP .so
文件,我还需要包含libgomp.so的路径:
-L/usr/lib/gcc/x86_64-linux-gnu/4.6.3/
显然,这很脆弱,无法在机器上运行。有没有办法查询gcc,找出它放在libgomp.so的位置?
答案 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
即可链接您的可执行文件。