GCC:输入文件“ ../window.ui.o”的i386体系结构与i386:x86-64输出不兼容

时间:2018-08-10 20:45:21

标签: c linux gcc

我试图将名为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--output elf64-x86-64一起使用,这样可以正确编译但是在阅读时内容会乱码。


启发我的原始guide

1 个答案:

答案 0 :(得分:0)

使用gnu-ld来“解决”:

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

无法弄清楚为什么objcopy不能正常工作。