首页 > 解决方案 > 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 仍然包含该文件?

我也尝试过objcopywith --output elf64-x86-64,这可以正确编译,但是阅读时内容会乱码。


启发我的原始指南

标签: clinuxgcc

解决方案


通过使用 gnu-ld 来“解决”:

ld -r -b binary ../src/window.ui -o ../window.ui.o

无法弄清楚为什么objcopy没有工作。


推荐阅读