GCC 错误错误的 ELF 类:ELFCLASS64,尽管有 -m64 标志

gcc error wrong ELF class: ELFCLASS64, despite haveing -m64 flag

本文关键字:错误 -m64 标志 ELFCLASS64 ELF GCC      更新时间:2023-10-16

我一直在尝试使用 gcc 在 solaris 中构建一个库,并不断遇到wrong ELF class: ELFCLASS64错误。我用谷歌搜索过,发现这是由于试图链接到一个编译为 64 位库的 32 位文件。但是我已经确保我使用 -m64 编译器选项将 rakesh.o 构建为 64 位。

/rdcomb/run/pd/gcc/32-bit/4.4.1/bin/g++ -Wall -W -Wunreachable-code -Winline -Wshadow -Weffc++ -Wfloat-equal -Wunsafe-loop-optimizations -Wcast-qual -Wdisabled-optimization -shared -fPIC -m64 -c -DDEBUG -I../include -I/home/radha/ali/trunk/src/top//src/ -I../../../top/include -g -o Suni386/dll/rakesh.o rakesh.cpp
xmake: /home/radha/ali/trunk/src/tools/bin/Suni386/xlink -g -o Suni386/dll/rakesh -p../../../top/gtcpp/Suni386/dll -lgtcpp   -lsocket -lnsl Suni386/dll/rakesh.o
ld: fatal: file Suni386/dll/rakesh.o: wrong ELF class: ELFCLASS64
ld: fatal: file processing errors. No output written to Suni386/dll/rakesh
collect2: ld returned 1 exit status
/rdcomb/run/pd/gcc/32-bit/4.4.1/bin/g++ -g -o Suni386/dll/rakesh -L../../../top/gtcpp/Suni386/dll Suni386/dll/rakesh.o -lgtcpp -lsocket -lnsl
xmake: /home/radha/ali/trunk/src/tools/bin/Suni386/xlink: error 1 (0x1)

我在这里做错了什么?是由于某些编译器标志使用还是丢失?

还必须

为链接器提供 -m64 标志,以便它知道需要哪种类型的二进制文件。