使用gcc的本地副本编译,不兼容的libstdc ++

时间:2014-11-19 00:13:24

标签: c++ c++11 gcc

我的问题与how to dynamically link to local copy of libc.so.6, libstdc++.so.6 on system with old version of gcc中提出的问题非常类似,我按照那里提供的答案。总而言之,问题是我使用C ++ 11编写代码,并且集群系统管理员不会将gcc编译器升级到支持C ++ 11的版本。我在我的主目录中手动安装了gcc4.9(使用--prefix = $ HOME)。我使用以下标志编译我的代码:

-I/home/stroberg/include -L/home/stroberg/lib -lc -lstdc++ -llapack -lblas -O3 -std=C++11

我也设置了

export LD_LIBRARY_PATH=/home/stroberg/lib:$LD_LIBRARY_PATH

编译正常,直到它进入链接阶段,我得到以下错误:

/usr/bin/ld: skipping incompatible /home/stroberg/lib/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /home/stroberg/lib/libstdc++.a when searching for -lstdc++
/usr/bin/ld: skipping incompatible /home/stroberg/lib/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /home/stroberg/lib/libstdc++.a when searching for -lstdc++
/usr/bin/ld: skipping incompatible /home/stroberg/lib/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: skipping incompatible /home/stroberg/lib/libgcc_s.so when searching for -lgcc_s

任何可能导致问题的想法?我也使用armadillo软件包(也是本地版本),这有所不同。

感谢。

1 个答案:

答案 0 :(得分:0)

我得到了它,所以我想我应该发布我所做的。使用

进行编译
-I$(HOME)/include -L$(HOME)/lib -lblas -llapack -lgsl -lglsblas -O3 -std=c++11
似乎可以解决问题。希望我知道究竟是什么解决了这个问题,但我希望这会有所帮助。