我正在尝试使用自定义前缀构建 gcc 4.7.2$PREFIX
我已将所有先决条件构建并安装到我的前缀位置,然后成功配置、构建和安装 gcc。
我现在遇到的问题$PREFIX
是不在库搜索路径中,因此无法找到共享库。
$PREFIX/bin $ ./g++ ~/main.cpp
$PREFIX/libexec/gcc/x86_64-suse-linux/4.7.2/cc1plus: \
error while loading shared libraries: \
libcloog-isl.so.1: \
cannot open shared object file: No such file or directory
什么有效,但不理想
如果我export LD_LIBRARY_PATH=$PREFIX/lib
那么它可以工作,但我正在寻找无需设置环境变量即可工作的东西。
如果我patchelf
用来设置RPATH
所有gcc
二进制文件,那么它也可以工作;但是,这涉及搜索所有精灵二进制文件并遍历它们调用patchelf
,我宁愿拥有更永久的东西。
我认为最适合我的目的
所以我希望有一种方法可以-Wl,-rpath,$PREFIX/lib
在构建过程中通过。
因为我知道不需要更改路径,所以这似乎是最强大的解决方案,也可以用于我们构建下一个 gcc 版本时。
是否可以将构建过程配置为硬编码RPATH
?
我已经尝试过,但没有用
LDFLAGS_FOR_TARGET
调用前设置configure
:
所有这些都失败了:
export LDFLAGS_FOR_TARGET="-L$PREFIX/lib -R$PREFIX/lib"
export LDFLAGS_FOR_TARGET="-L$PREFIX/lib"
export LDFLAGS_FOR_TARGET="-L$PREFIX/lib -Wl,-rpath,$PREFIX/lib"
LDFLAGS
调用前设置configure
:
export LDFLAGS="-L$PREFIX/lib -Wl,-rpath,$PREFIX/lib"
无论如何,我担心这些会覆盖 gcc 的任何内容,LDFLAGS
所以我不确定这些是否是可行的选择,即使它们可以工作?
我的配置行
为了完整起见,这是我传递给配置的行:
./configure \
--prefix=$PREFIX \
--build=x86_64-suse-linux \
--with-pkgversion='SIG build 12/10/2012' \
--disable-multilib \
--enable-cloog-backend=isl \
--with-mpc=$PREFIX \
--with-mpfr=$PREFIX \
--with-gmp=$PREFIX \
--with-cloog=$PREFIX \
--with-ppl=$PREFIX \
--with-gxx-include-dir=$PREFIX/include/c++/4.7.2