我运行FreeBSD 10.1(使用clang堆栈,即libc ++,libcxxrt和朋友),我尝试使用 gcc 编译应用程序,但没有运气。
我已将我的C ++编译器设置为g ++ 49并且我已经验证了链接的stdlib正确地在/ usr / local / lib / gcc49中,但是当运行应用程序时,ld.so搜索libstdc ++。所以.6在/ usr / local / lib / gcc48中代替:
% ldconfig -r | grep libstdc++
1118:-lstdc++.6 => /usr/local/lib/gcc48/libstdc++.so.6
1142:-lstdc++.6 => /usr/local/lib/gcc49/libstdc++.so.6
导致这种情况发生:
/usr/local/lib/gcc48/libstdc++.so.6: version GLIBCXX_3.4.20 required by /usr/home/ryan/foobar not found
% ldd foobar
foobar:
libstdc++.so.6 => /usr/local/lib/gcc48/libstdc++.so.6 (0x80081d000)
libm.so.5 => /lib/libm.so.5 (0x800b26000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x800d4e000)
libc.so.7 => /lib/libc.so.7 (0x800f5c000)
有没有人对如何永久解决这个问题有任何想法(即没有设置LD_LIBRARY_PATH)?
答案 0 :(得分:0)
尝试安装
/usr/ports/misc/compat6x
答案 1 :(得分:0)
您可以链接-rpath
以在生成的可执行文件中设置运行时库路径。这与LD_LIBRARY_PATH
的工作方式类似,不需要在环境中有任何特殊之处。