【发布时间】: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 位的代码,这是这个问题的错误原因。