zoukankan      html  css  js  c++  java
  • ld: i386 架构于输入文件 bar.o 与 i386:x86-64 输出不兼容

    报错:ld: i386 架构于输入文件 foo.o 与 i386:x86-64 输出不兼容

    或者:ld: i386 architecture of input file `foo.o' is incompatible with i386:x86-64 output

    编译链接指令
    1

    1
    nasm -f elf foo.s -o foo.o
    2

    1
    gcc -c bar.c -o bar.o
    3

    1
    ld -s -o foobar bar.o foo.o
    汇编语言用nasm编写并用nasm编译器编译,而C语言用的是gcc编译,这些都没有问题,但是在链接的时候出错了,提示如下:
    ld: i386 architecture of input file `foo.o' is incompatible with i386:x86-64 output

    意思就是nasm 编译产生的是32位的目标代码,gcc 在64位平台上默认产生的是64位的目标代码,这两者在链接的时候出错,gcc在64位平台上默认以64位的方式链接。
    这样在解决的时候就会有两种解决方案:
    <1> 让gcc 产生32位的代码,并在链接的时候以32位的方式进行链接
    在这种情况下只需要修改编译和链接指令即可,具体如下:
    32位的编译链接指令
    1

    1
    nasm -f elf foo.s -o foo.o
    2

    1
    gcc -m32 -c bar.c -o bar.o
    3

    1
    ld -m elf_i386 -s -o foobar foo.o bar.o
    具体的-m32 和 -m elf_i386 请自行查阅gcc (man gcc)

  • 相关阅读:
    CF460 A. Vasya and Socks
    HDU-2159FATE(二维完全背包)
    HDU-2844 Coins(多重背包)
    POJ 1014 Dividing(多重背包)
    HDU2191(多重背包)
    数据结构课程设计:稀疏矩阵(加、减、乘、求逆矩阵)
    (转载)线段树模板(来自胡浩大牛)
    poj2386(简单dfs)
    Poj1852
    poj2109
  • 原文地址:https://www.cnblogs.com/liubiyonge/p/9405623.html
Copyright © 2011-2022 走看看