与自己的gcc链接时,您需要添加一个额外的运行时链接程序搜索路径,
-Wl,-rpath,$(PREFIX)/lib64以便在运行时找到与您的gcc对应的共享库。
我通常在与我调用的目录相同的目录中创建一个包装器
gcc,而不是和调用,而在动态链接器中找不到该包装器:
g++``gcc-4.8``g++-4.8``gcc-4.8``g++-4.8
#!/bin/bashexec ${0}SUFFIX -Wl,-rpath,PREFIX/lib64 "$@"安装时
SUFFIX,
PREFIX应将其替换为
configure:
cd ${PREFIX}/bin && rm -f gcc g++ c++ gfortransed -e 's#PREFIX#${PREFIX}#g' -e 's#SUFFIX#${SUFFIX}#g' gcc-wrapper.sh > ${PREFIX}/bin/gccchmod +x ${PREFIX}/bin/gcccd ${PREFIX}/bin && ln gcc g++ && ln gcc c++ && ln gcc gfortran(
gcc-wrapper.sh是bash片段)。
上面的解决方案不适用于的某些版本,
libtool因为它
g++ -Wl,... -v采用链接模式,并因错误而失败。
更好的解决方案是使用specs文件。一旦构建了gcc / g ,请调用以下命令以将gcc / g
添加
-rpath到链接器命令行中(
${PREFIX}/lib64根据需要替换):g++ -dumpspecs | awk '/^*link:/ { print; getline; print "-rpath=${PREFIX}/lib64", $0; next } { print }' > $(dirname $(g++ -print-libgcc-file-name))/specs


