gpt4 book ai didi

c++ - mipsel-linux-objdump 无法识别 mipsel-linux-g++ 对象

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:48 25 4
gpt4 key购买 nike

我正在使用 OpenWrt toolchain构建一个使用 C 库的 C++ 应用程序,但我怀疑这是否相关。

我有两个文件 file.h(其中包含一个 C++ 类及其实现)和使用该类的 main.cpp

首先,我尝试从 file.h

创建一个对象
 mipsel-linux-g++ -Wall -c -Ipath_to/staging_dir_mipsel/include -Ipath_to/staging_dir_mipsel/usr/incude file.h -o file.o

这没有给出错误并创建了目标文件。我对 main.cpp 做了同样的事情,但在将它们链接在一起时遇到了问题。

当我运行时

mipsel-linux-readelf -h main.o

它返回 Sprite 对象的头部

当我运行时

mipsel-linux-readelf -h file.o

返回

readelf: Error: Unable to read in 0x2d78 bytes of section headers
readelf: Error: Not an ELF file - it has the wrong magic bytes at the start

有什么指点吗? :)

最佳答案

gcc ... -c file.h -o file.o

将 C 代码放入头文件中,并尝试以上述方式将其编译为目标代码是极其不寻常的。

事实上,上面给出的命令 GCC 并没有这样做,这是非常不寻常的。相反,它将 file.h 编译成一个预编译头文件(通常称为 .gch,但强制称为 .o 通过你不幸的 -o 选项)。

因此,file.o 不是 ELF 文件也就不足为奇了。只需运行 file file.o 并查看它是否打印 GCC precompiled header (version 013) for C 或类似的东西。

如果您确实希望将 file.h 编译为 ELF 对象 file.o,请将其命名为 file.c

关于c++ - mipsel-linux-objdump 无法识别 mipsel-linux-g++ 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10867007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com