c++ - gcc 错误错误的 ELF 类 : ELFCLASS64, 尽管有 -m64 标志

标签 c++ unix gcc solaris elf

我一直在尝试使用 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 标志,以便它知道期望的二进制文件类型。

关于c++ - gcc 错误错误的 ELF 类 : ELFCLASS64, 尽管有 -m64 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29892945/

相关文章:

return 语句中的 C++ constexpr 函数

gcc - 如何使用 AES-NI 指令和 GCC 实现 AES128 加密/解密

c++ - 如何调用非模板方法而不是模板方法?

perl - 如何使用 bash 或 perl 在 Unix 上查找 find2perl 脚本的路径

c - 遍历C中的目录

c - 使用文本解释器和 execl 打印 agruments

c - exe无法在dos模式下运行

c++ - QGridLayout 具有不同大小的单元格

c++ - prims 算法中父数组始终为零

c++ - 更快地访问 C++ 数组中的随机元素