我正在尝试运行一些预编译的代码但是我收到以下错误:
./bin/stipdet: /cm/shared/apps/gcc/4.3.4/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./bin/stipdet)
我搜索了错误,发现有些人通过删除libstdc++.so.6
并添加指向usr/local/lib
的新动态链接来解决类似问题。但是我在系统上没有root访问权限我正在尝试运行它,因此我无法在该目录中添加/删除文件。
有谁知道解决这个问题的另一种方法?
更新:
我尝试将libstdc++.so.6
的另一个版本的目录添加到LD_PRELOAD
,但它对我不起作用,它仍然使用错误目录中的文件。
当我将正确的目录添加到LD_LIBRARY_PATH
时,会发生同样的情况。最后,我还尝试从LD_LIBRARY_PATH
中删除其他所有内容,然后添加正确的目录(只是为了尝试)。这似乎解决了原始错误!
但现在我在不同的位置得到了同样的错误:
./bin/stipdet: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /var/scratch/user/local/lib/libopencv_features2d.so.2.2)
显然opencv
使用了不同的glibcxx
版本,因此切换到另一个libstdc
符号opencv
。有没有解决这个问题的方法?
答案 0 :(得分:4)
如果你已经在别处安装了正确版本的libstdc ++。so.6(例如在你的主目录中),你可以设置LD_LIBRARY_PATH或使用LD_PRELOAD,参见 What is the LD_PRELOAD trick?
答案 1 :(得分:0)
如果你告诉你正在运行什么操作系统会有所帮助。如果是Solaris,您可能希望尝试设置LD_NOVERSION以告知运行时链接程序忽略共享库版本。
export LD_NOVERSION=1
答案 2 :(得分:0)
libstdc ++常见问题解答回答了您的原始问题:http://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_set_paths
对于更新,这不应该发生。应在您的libstdc++.so
中找到较新的LD_LIBRARY_PATH
thaqt,其中包含较旧版本的所有符号。可能/var/scratch/user/local/lib/libopencv_features2d.so.2.2
与绝对路径相关联,而不是与SONAME libstdc++.so.6
相关联,您可以通过运行来检查:
ldd /var/scratch/user/local/lib/libopencv_features2d.so.2.2
答案 3 :(得分:0)
我复制的文件A(在/ usr / lib64下/的libstdc ++。so.6)到词典B(/选择/ MATLAB / MATLAB_Compiler_Runtime / v711 / SYS / OS / glnxa64)和它的工作。