ld:与std c静态库链接

时间:2017-01-17 06:29:38

标签: c gcc ld

我使用gcc -c -nostdlib -fno-stack-protector <my code> -o <my cobj>编译我的c代码,并且我想使用std库函数,例如sprintf strcmp等等。所以如何链接我的{ {1}} cobj std静态库的文件?

我的c链接脚本为Makefile

ps:我使用ld -T $@.ld -o $@.o $^ -L.. -llib --no-check-sections选项进行编译,因为我不想要-nostdlib库的crt部分,但我想使用像{{}}这样的平台无关的函数{1}},stdsprintfstrcmp等等

1 个答案:

答案 0 :(得分:0)

您可以使用-nostartfiles -static -nostdlib -fno-stack-protector -lc进行编译,但要注意libc的某些部分可能依赖于libgcc(__gcc_personality_v0等)的部分,因此您很可能在链接期间出错。

您可以提供此类函数的虚拟(或非虚拟)实现。或者您可以使用不依赖于libgcc的不同libc实现(可能是newlib或uClibc)。

This question可能相关。