链接非默认glibc

时间:2014-05-14 02:29:30

标签: c++ c glibc

我正在尝试链接Andi Kleen's glibc implementation以启用带有pthreads的程序的锁定省略。 我将我的程序链接如下:

g++ \
-Wl,--rpath=/path/glibc-elision/build/lib \
-Wl,--dynamic-linker=/path/glibc-elision/build/lib/ld-linux-x86-64.so.2 \
-o program program.o \
-fgnu-tm -mrtm -pthread \
-Wl,--no-as-needed --enable-lock-elision=yes

只要我不使用libstdc ++的任何组件,一切正常。

但是,尽快,例如引用了std::vector,动态链接器找不到libstdc ++。so.6(error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory)。

要解决此错误,我尝试使用-Wl,--rpath=/path/glibc-elision/build/lib;/usr/lib/x86_64-linux-gnu/libstdc++.so.6提供自定义以及标准glibc。 这不是正确的调用,但想法是以某种方式提供两个库。

所以问题是:

如何将程序与两个glibcs​​的不同组件相关联?

我正在使用gcc(Ubuntu / Linaro 4.8.1-10ubuntu8)4.8.1开发Ubuntu 13.10。

1 个答案:

答案 0 :(得分:3)

感谢Nemo's comment,可以通过将C ++运行时附加到rpath来解决该问题。就我而言,那是

-Wl,--rpath=/path/glibc-elision/build/lib:/usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu

也可以使用export LD_LIBRARY_PATH=/your/path设置路径。

事实证明,我错误地使用;代替:来附加原始帖子中的路径。