使用自定义路径GCC4.9编译C++包时遇cc1plus共享库加载错误
解决GCC4.9编译时cc1plus共享库加载失败问题
我太懂你现在的郁闷了——明明已经在Makefile里指定了GCC4.9的路径,编译时也确实用上了这个版本,结果却卡在了/cc1plus: error while loading shared libraries...的错误上。这个问题本质是GCC的C++前端程序cc1plus找不到它依赖的共享库文件,毕竟你只是指定了二进制文件的路径,系统动态链接器还不知道该去哪里找配套的库。
先确认下你的配置,你在Makefile里加了这两行来切换编译器:
override CXX := $(shell {some path})/gcc-rhel5/bin/g++ override CC := $(shell {some-path})/gcc-rhel5/bin/g++
(这里提醒下,路径里的{some path}和{some-path}要保持拼写一致哦,避免因为路径拼写错误引发连锁问题)
下面给你几个实用的解决办法:
方法一:在Makefile中配置动态链接库路径
在设置CXX和CC的代码后面,添加环境变量指定GCC4.9的库目录,让动态链接器能精准找到对应库:override LD_LIBRARY_PATH := $(shell {some path})/gcc-rhel5/lib64:$(LD_LIBRARY_PATH) export LD_LIBRARY_PATH注意如果你的系统是32位的,库目录可能是
lib而不是lib64,根据实际安装情况调整即可。方法二:编译时通过-rpath指定库路径
如果你不想修改全局环境变量,可以在编译选项里直接给程序指定库的搜索路径,这样编译后的程序也能直接定位到依赖:override CXXFLAGS += -Wl,-rpath,{some path}/gcc-rhel5/lib64方法三:检查GCC4.9安装完整性
有时候这个错误是因为GCC4.9的安装包不完整,缺少了关键的共享库。你可以手动去{some path}/gcc-rhel5/lib64目录下检查,看看有没有libstdc++.so.6、libgcc_s.so.1这些核心文件,如果缺失的话,需要重新安装完整的GCC4.9依赖包。
内容的提问来源于stack exchange,提问作者Pavan Tiwari
相关产品推荐
相关产品推荐

