2

当我想在我的机器上使用 OpenMP 时,我编译了一个 C 程序

gcc -fopenmp

并包括

-lgomp

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

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

显然,这很脆弱,不能跨机器工作。有什么方法可以查询 gcc 以找出它把 libgomp.so 放在哪里?

4

2 回答 2

4

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

于 2013-09-19T08:09:38.023 回答
2

你真的应该让运行时链接器为你找到动态库。如果包含.so. /etc/ld.so.conf_ _ _/etc/ld.so.conf.dldconfig.so

如果您想在运行时增加/更改已编译的链接器路径(通过 提供给编译时链接器-L),则有两个相关的环境变量LD_LIBRARY_PATHLD_PRELOAD

$ LD_LIBRARY_PATH=/path/to/directory/containing/so ./foo

$ LD_PRELOAD=/path/to/so/to/load.so.0.1.2 ./foo
于 2013-09-19T01:02:40.717 回答