为什么总是显示“版本`GLIBCXX_3.4.21'”,但它实际上存在?

时间:2018-10-30 07:37:44

标签: c++ gcc runtime-error

在实验室的群集计算机中,我有2个编译器,一个是gcc4,一个是gcc5。 gcc4库位于标准目录(即/ usr / lib64)中,而gcc5库位于/ usr / local / lib64中。

所以我正在编译程序,并使用ldd检查库:

NullPointerException

您可以看到libstdc ++在此二进制文件的/ usr / local / lib64中。

但是,当我尝试使用qsub命令提交作业时,它给了我错误消息:

ldd bin/cell

linux-vdso.so.1 =>  (0x00007fffad1fc000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x00000039f0c00000)
libsundials_cvode.so.2 => /opt/Lib/sundials-2.7.0/lib/libsundials_cvode.so.2 (0x00002b16bab69000)
libsundials_nvecserial.so.2 => /opt/Lib/sundials-2.7.0/lib/libsundials_nvecserial.so.2 (0x00002b16bad93000)
libsundials_nvecparallel.so.2 => /opt/Lib/sundials-2.7.0/lib/libsundials_nvecparallel.so.2 (0x00002b16baf98000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000039efc00000)
libz.so.1 => /usr/lib64/libz.so.1 (0x00000037c7600000)
libstdc++.so.6 => /usr/local/lib64/libstdc++.so.6 (0x00002b16bb1cd000)
libmpi.so.20 => /opt/Lib/openmpi-2.1.3/lib/libmpi.so.20 (0x00002b16bb570000)
libm.so.6 => /lib64/libm.so.6 (0x00000039f0000000)
libgcc_s.so.1 => /usr/local/lib64/libgcc_s.so.1 (0x00002b16bb863000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00000039f0400000)
libc.so.6 => /lib64/libc.so.6 (0x00000039ef800000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x00000039f0800000)
libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00000039f1000000)
/lib64/ld-linux-x86-64.so.2 (0x00000039ef000000)
libopen-rte.so.20 => /opt/Lib/openmpi-2.1.3/lib/libopen-rte.so.20 (0x00002b16bba7c000)
libopen-pal.so.20 => /opt/Lib/openmpi-2.1.3/lib/libopen-pal.so.20 (0x00002b16bbd05000)
librt.so.1 => /lib64/librt.so.1 (0x00000039f3c00000)
libutil.so.1 => /lib64/libutil.so.1 (0x00000039fca00000)

它没有检查/ usr / local / lib64,而是检查了我的/ usr / lib64,这是旧的GCC4 libs目录。

我的问题是: 怎么会这样 是否有任何解决方法可以强制将二进制文件定向到正确的GCC libs目录?

0 个答案:

没有答案