【发布时间】:2019-09-02 13:06:05
【问题描述】:
我正在尝试使用 gcc 从源代码编译 lftp,该编译器也是我从主文件夹下的源代码编译的。 在构建步骤中出现错误:
/bin/sh ../libtool --silent --tag=CXX --mode=link g++ -O2 -Wall -Wwrite-strings -Woverloaded-virtual -fno-exceptions -fno-rtti -fno-implement-inlines -export-dynamic -s -o lftp lftp-lftp.o lftp-complete.o lftp-lftp_rl.o lftp-attach.o liblftp-jobs.la liblftp-tasks.la -L/usr/lib -lreadline -lutil -lncurses -ldl
/gsa/pokgsa/home/l/e/leonidt/local/lib/../lib/libstdc++.so: error adding symbols: File in wrong format
collect2:错误:ld 返回 1 个退出状态
make[2]: * [lftp] 错误 1
make[2]: 离开目录/gsa/pokgsa-h3/19/leonidt/local/lftp-4.8.4/src'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory/gsa/pokgsa-h3/19/leonidt/local/lftp-4.8.4'
make: * [安装] 错误 2
所以看起来编译器是用 libstdc++.so 构建的,架构错误?
我试图检查 libstdc++.so 中的内容:
file /gsa/pokgsa/home/l/e/leonidt/local/lib/libstdc++.so
/gsa/pokgsa/home/l/e/leonidt/local/lib/libstdc++.so: symbolic link to `libstdc++.so.6.0.27'
file /gsa/pokgsa/home/l/e/leonidt/local/lib/libstdc++.so.6.0.27
/gsa/pokgsa/home/l/e/leonidt/local/lib/libstdc++.so.6.0.27: **ELF 32-bit** MSB shared object, IBM S/390, version 1 (GNU/Linux), dynamically linked, not stripped
以下是我在本地文件夹中构建 gcc 的步骤:
cd ~/local
解压gcc-9.2.0.tar.xz 使用 gcc 源创建 ~/local/gcc-9.2.0
cd ../gcc-9.2.0/
下载的先决条件
contrib/download_prerequisites
cd ~/local/gcc-build
../gcc-9.2.0/configure --prefix /gsa/pokgsa/home/l/e/leonidt/local/ --enable-languages=c,c++
我在 SuSe Linux 上:
uname -a
Linux zdsdeveng03 3.0.101-108.84-default #1 SMP Fri Nov 30 15:57:27 UTC 2018 (7a72692) s390x s390x s390x GNU/Linux
cat /etc/os-release NAME="SLES"
VERSION="11.4"
VERSION_ID="11.4"
PRETTY_NAME="SUSE Linux Enterprise Server 11 SP4"
ID="sles"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:suse:sles:11:4"
【问题讨论】: