【问题标题】:/usr/bin/ld: cannot find -lgcc - Error in the linkage of assembly/usr/bin/ld: 找不到 -lgcc - 程序集链接错误
【发布时间】:2016-03-17 02:42:53
【问题描述】:

我正在尝试在 Linux Mint 17.2 中编译 main.c 代码和汇编代码 pstring.s

当我尝试链接代码时,gcc 返回: /usr/bin/ld: cannot find -lgcc.

有谁知道我需要更改什么才能使其正常工作?

gcc -m32 -g -c -o pstring.o pstring.s 

shay@shay-Latitude-E6410~/workspace1/targ3Mivne $ gcc -m32 -g -c -o main.o main.c

shay@shay-Latitude-E6410 ~/workspace1/targ3Mivne $ gcc -m32 -g -o a.out main.o pstring.o

/usr/bin/ld: skipping incompatible
/usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc.a when searching for -lgcc

/usr/bin/ld: cannot find -lgcc /usr/bin/ld: skipping incompatible
/usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc_s.so when searching for
-lgcc_s /usr/bin/ld: cannot find -lgcc_s 

collect2: error: ld returned 1 
exit status

【问题讨论】:

  • 你使用的是什么版本的 gcc?你用的是multilib版本吗?你能告诉我们你用来编译和链接的命令吗?
  • [gcc -m32 -g -c -o pstring.o pstring.s shay@shay-Latitude-E6410 ~/workspace1/targ3Mivne $ gcc -m32 -g -c -o main.o main .c shay@shay-Latitude-E6410 ~/workspace1/targ3Mivne $ gcc -m32 -g -o a.out main.o pstring.o /usr/bin/ld: 跳过不兼容的 /usr/lib/gcc/x86_64-linux -gnu/4.8/libgcc.a 搜索 -lgcc /usr/bin/ld 时:找不到 -lgcc /usr/bin/ld:跳过不兼容的 /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc_s。所以当搜索 -lgcc_s /usr/bin/ld: 找不到 -lgcc_s collect2: error: ld returned 1 exit status]
  • 尝试使用命令sudo apt-get install gcc-multilib g++-multilib安装这些包
  • @MichaelPetch 为什么与没有使用 multilib 编译的 gcc 相比,这项工作有效?
  • @sholsapp 如果没有 multilib,则 32 位版本的 libgcc 不可用。 64 位的不能链接到 32 位的代码,这是这个问题的错误原因。

标签: c linux gcc assembly


【解决方案1】:

尝试使用命令sudo apt-get install gcc-multilib g++-multilib 安装这些软件包

如果没有 multilib,则 32 位版本的 libgcc 不可用。 64 位代码无法链接到 32 位代码,这是此问题中出现错误的原因。 ——迈克尔·佩奇

【讨论】:

    猜你喜欢
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 2014-07-09
    相关资源
    最近更新 更多