安装gcc 4.7但无法成功运行程序

时间:2014-04-09 14:47:15

标签: c++ gcc c++11

我需要使用C ++ 11,所以我将我的GCC从4.1更新到4.7。我编译源代码并进行安装。 gcc -version将显示4.7.0(一切看起来都不错)。我使用以下方法编译了我的程序:

g++ -O2 -std=c++11 -o wdSer wdSer.cpp

之后我运行我的程序./wdSer,有以下信息:

./wdSer: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./wdSer)
./wdSer: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by ./wdSer)
./wdSer: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.10' not found (required by ./wdSer)
./wdSer: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./wdSer)

谁能告诉我如何解决它?

1 个答案:

答案 0 :(得分:3)

首先尝试这个:

LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH ./wdSer

/ usr / local / lib64是64位构建gcc的默认库目录。 将LD_LIBRARY_PATH设置为包含该目录会告诉链接器在该目录中查找库文件。

如果这不起作用,请查看g ++ -v

的输出

在我的系统上,我明白了:

$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/local/gcc-4.8.2/libexec/gcc/x86_64-unknown-linux-gnu/4.8.2/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-4.8.2/configure --prefix=/usr/local/gcc-4.8.2 --with-isl=/usr/local/isl-0.12.2 --with-cloog=/usr/local/cloog-0.18.1
Thread model: posix
gcc version 4.8.2 (GCC) 

在此输出中,您正在寻找--prefix之后的目录。将/ lib64添加到该前缀的末尾,您将拥有库目录。 在我的系统上,它是/usr/local/gcc-4.8.2,所以我需要链接器查看/usr/local/gcc-4.8.2/lib64来查找我的libstdc ++。 所以我运行这样的程序:

LD_LIBRARY_PATH=/usr/local/gcc-4.8.2/lib64:$LD_LIBRARY_PATH ./a.out

如果您不想在运行程序之前设置LD_LIBRARY_PATH,则应使用-Wl,-rpath =构建它们,如下所示:

$ g++  -std=c++11 -o wdSer -Wl,-rpath=/usr/local/lib64/ wdSer.cc

您可以在程序上使用ldd来查看链接到的共享库的位置:

$ ldd a.out
        linux-vdso.so.1 =>  (0x00007fff8a506000)
        libstdc++.so.6 => /usr/local/gcc-4.8.2/lib64/libstdc++.so.6 (0x00007fa3c6aaf000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa3c6811000)
        libgcc_s.so.1 => /usr/local/gcc-4.8.2/lib64/libgcc_s.so.1 (0x00007fa3c67fa000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa3c646f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fa3c6bbc000)

这里,a.out是我使用选项-Wl,-rpath = / usr / local / gcc-4.8.2 / lib64构建的程序,因此链接器首先查找,然后查找与我一起使用的libstdc ++ gcc 4.8.2安装。

请参阅-v标志的文档:http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Overall-Options.html#Overall-Options(并搜索-v)

-Wl标志:http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Link-Options.html#Link-Options(并向下滚动到底部)

和-rpath标志:https://sourceware.org/binutils/docs-2.24/ld/Options.html#Options(并搜索-rpath)