使用 gcc 制作可重定位对象会导致 "cannot find -lgcc_s" 错误
Making relocatable object with gcc causes "cannot find -lgcc_s" error
我正在尝试使用 gcc 创建一个可重定位的目标文件。我使用 this post 的解决方案。该解决方案适用于 ld:
$ ld -r a.o b.o -o c.o
然而,当我尝试将它与 gcc 一起使用时,会发生以下错误:
$ gcc -r a.o b.o -o c.o
/usr/bin/ld: cannot find -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status
使用 -Wl,-r
和 -Wl,--relocatable
选项给出相同的结果。
有什么方法可以使用 gcc link 可重定位目标文件,或者我不得不使用 ld 来做这个?
为了解决这个问题,-nostdlib
选项也必须传递给gcc:
$ gcc -r -nostdlib a.o b.o -o c.o
我不确定,但似乎没有这个选项 gcc 试图 link 标准库到输出可重定位对象。
我正在尝试使用 gcc 创建一个可重定位的目标文件。我使用 this post 的解决方案。该解决方案适用于 ld:
$ ld -r a.o b.o -o c.o
然而,当我尝试将它与 gcc 一起使用时,会发生以下错误:
$ gcc -r a.o b.o -o c.o
/usr/bin/ld: cannot find -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status
使用 -Wl,-r
和 -Wl,--relocatable
选项给出相同的结果。
有什么方法可以使用 gcc link 可重定位目标文件,或者我不得不使用 ld 来做这个?
为了解决这个问题,-nostdlib
选项也必须传递给gcc:
$ gcc -r -nostdlib a.o b.o -o c.o
我不确定,但似乎没有这个选项 gcc 试图 link 标准库到输出可重定位对象。