我正在尝试将Andi Kleen的glibc实现链接到一个使用pthread的程序中,以启用锁消除功能。 我按照以下方式链接我的程序:
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。这不是正确的调用,但想法是以某种方式提供两个库。
所以问题是: 如何针对两个glibc的不同组件链接程序?
我正在使用Ubuntu 13.10,gcc(Ubuntu/Linaro 4.8.1-10ubuntu8)4.8.1。
LD_LIBRARY_PATH
设置为/usr/lib64
。 - Nemo