Mipsel-Linux-G++ 对象无法被 Mipsel-Linux-objdump 识别
mipsel-linux-g++ object not recognized by mipsel-linux-objdump
我正在使用OpenWrt工具链来构建一个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
它返回 elf 对象的标头
当我跑步时
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++/Linux中设置单调时钟的一些技巧
- Linux的Cpp上的计时器
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux中哪里可以找到互斥、未来等的源代码
- 如何在linux终端中同时编译和运行c++代码
- 在Linux for Windows上编译C++代码时出错
- 如何找到锁定Linux futex的C++行
- 在linux上调试巨大的C++项目
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- c++方法参数只能在linux的发布模式下自行更改
- 在Linux和C++中的Windows上,散列字符串值会产生不同的输出
- 这里在 Linux 中具有"CreatePipe"和"CreateProcessW"功能吗?
- 函数在Windows或Linux上运行时表现不同
- 在Linux下捕获SIGKILL的C++程序
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 如何在CPP中创建应该在Windows和Linux上运行的套接字?
- mysql C++ connector [mysql-connector-c++-8.0.19-linux-glibc2
- 这些是什么样的错误?即使我不在 Linux 上工作,我也遇到了 Linux 错误
- Mipsel-Linux-G++ 对象无法被 Mipsel-Linux-objdump 识别