在Centos 6.5 64位
机器上编译一个 64位
程序时,出现错误:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../crt1.o: could not read symbols: File in wrong format
可以看到,编译器对应到了 32位
lib目录下
尝试解决
-
查看
crt1.o
文件格式:# file /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../crt1.o /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../crt1.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.18, not stripped
是
32位
的 -
查看
crt1.o
文件的所属安装包:# rpm -qf /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../crt1.o glibc-devel-2.12-1.212.el6.i686
是属于
32位
的glibc-devel
开发包 -
查看
glibc-devel
的安装情况# yum list glibc-devel Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.huaweicloud.com Installed Packages glibc-devel.i686 2.12-1.212.el6 @base Available Packages glibc-devel.i686 2.12-1.212.el6_10.3 updates glibc-devel.x86_64 2.12-1.212.el6_10.3 updates
可以看到,只安装了
32位
,而没有安装64位
的glibc-devel
-
安装
64位
glibc-devel:# yum install glibc-devel.x86_64
-
完成后,重新编译
64位
程序,一切正常!