我已将 GCC 3.4 安装到 /opt/gcc-3.4,并使用它来编译与 GCC 4 不兼容的遗留代码。这也意味着旧版本的 C(++) 标准库、binutils 和实用程序图书馆。
它适用于某些库,但在编译 libtiff 时会失败,因为它会获取 /usr/lib 中的系统库(参见下面的输出)。这可能是一个自动工具/配置问题,但我不确定。我找不到配置开关或环境变量,我宁愿不修改我的系统 /usr/lib/libc.so 。
那么如何确保它链接到 /opt/gcc-3.4.4/lib 中的标准库,而完全忽略 /lib 和 /usr/lib 呢?
make 的输出(摘录):
libtool:链接:g++ -shared -nostdlib /usr/lib/crti.o /opt/gcc-3.4.3/lib/gcc/i686-pc-linux-gnu/3.4.3/crtbeginS.o .libs/tif_stream。 o -Wl,--whole-archive ../port/.libs/libport.a -Wl,--no-whole-archive -Wl,-rpath -Wl,/home/jason/d0src34/prereq/tiff-3.9 .4/libtiff/.libs -Wl,-rpath -Wl,/opt/gcc-3.4.3/lib -Wl,-rpath -Wl,/home/jason/d0src34/prereq/usr/lib -Wl,-rpath -Wl,/opt/gcc-3.4.3/lib ../libtiff/.libs/libtiff.so -L/usr/lib/usr/lib/libjpeg.so -lz -L/opt/gcc-3.4.3/lib/gcc/i686-pc-linux-gnu/3.4.3 -L/opt/gcc-3.4.3/lib/gcc /i686-pc-linux-gnu/3.4.3/../../.. /opt/gcc-3.4.3/lib/libstdc++.so -L/home/jason/Downloads/gcc-3.4.3/ build/i686-pc-linux-gnu/libstdc++-v3/src -L/home/jason/Downloads/gcc-3.4.3/build/i686-pc-linux-gnu/libstdc++-v3/src/.libs -L /home/jason/Downloads/gcc-3.4.3/build/gcc -lm -lc -lgcc_s /opt/gcc-3.4.3/lib/gcc/i686-pc-linux-gnu/3.4.3/crtendS.o /usr/lib/crtn.o -Wl,-soname -Wl,libtiffxx.so.3 -o .libs/libtiffxx.so.3.9.4
/home/jason/d0src34/prereq/usr/bin/ld: /usr/lib/libc.so: 文件格式无法识别;视为链接描述文件
/home/jason/d0src34/prereq/usr/bin/ld:/usr/lib/libc.so:5: 解析错误