c - GCC:输入文件 `../window.ui.o' 的 i386 架构与 i386:x86-64 输出不兼容
问题描述
我正在尝试将一个名为的文件嵌入window.ui
到我的 C 可执行文件中,目的是稍后从代码中访问内容:
objcopy --input binary \
--output elf32-i386 \
--binary-architecture i386 ../src/window.ui ../window.ui.o
gcc `pkg-config --cflags gtk+-3.0` \
../src/*.c \
../*.o \
`pkg-config --libs gtk+-3.0` \
-o ../a.out
编译时,GCC 失败并出现以下错误:
/usr/bin/x86_64-linux-gnu-ld: i386 architecture of input file `../window.ui.o' is incompatible with i386:x86-64 output
collect2: error: ld returned 1 exit status
有什么方法可以强制 GCC 仍然包含该文件?
我也尝试过objcopy
with --output elf64-x86-64
,这可以正确编译,但是阅读时内容会乱码。
启发我的原始指南
解决方案
通过使用 gnu-ld 来“解决”:
ld -r -b binary ../src/window.ui -o ../window.ui.o
无法弄清楚为什么objcopy
没有工作。
推荐阅读
- swift - SwiftUI 如果嵌入视图
- mysql - 将 Google 表格脚本连接到 MySQL
- navbar - 导航栏移动视图链接到页面不起作用
- mule - Mule 4 - 如何在缓存范围内进行错误处理?
- asp.net-core - 为什么asp.net核心控制器中的版本不起作用
- docker - 从内部向 docker 容器发送 SIGINT
- python - 如何使用 django 过滤属于其组的 obj
- java - 是否在通过引用添加的列表列表中添加列表?
- recursion - BEAM 字节码指令 call_last 的尾调用递归行为
- c# - 如何从我的 datagridview c# 创建图表?