ld:与std c静态库的链接
我用ld:与std c静态库的链接,c,gcc,ld,C,Gcc,Ld,我用gcc-c-nostdlib-fno stack protector-o编译我的c代码,我想使用std库函数,比如sprintfstrcmp等等。那么如何将我的cobj文件链接到stdc静态库呢 我的Makefile链接脚本是ld-T$@.ld-o$@.o$^-L-llib——无检查部分 ps:我使用-nostlib选项编译,因为我不想要std库的crt部分,但我想使用平台无关的函数,如sprintf,strcmp,random,va_list等等您可以使用-nostartfiles-sta
gcc-c-nostdlib-fno stack protector-o
编译我的c代码,我想使用std
库函数,比如sprintf
strcmp
等等。那么如何将我的cobj
文件链接到std
c
静态库呢
我的Makefile
链接脚本是ld-T$@.ld-o$@.o$^-L-llib——无检查部分
ps:我使用
-nostlib
选项编译,因为我不想要std
库的crt
部分,但我想使用平台无关的函数,如sprintf
,strcmp
,random
,va_list
等等您可以使用-nostartfiles-static-nostlib-fno stack protector-lc
进行编译,但请注意,libc的某些部分可能依赖于libgcc的片段(\ugcc_personality\u v0
等),因此在链接过程中很可能会出错
您可以为这些函数提供自己的虚拟(或不那么虚拟)实现。或者您可以使用不同的libc实现,它不依赖于libgcc(可能是newlib或uClibc)
可能相关。这没有意义。为什么对gcc说不要链接stdlib,然后问如何链接stdlib?@Stargateur因为我不想要stdlib的
crt
部分为什么你不想要c运行时库?似乎是XY问题。您可以随时获取所需函数的源代码,并构建自己的静态库。将-lgcc
(也可能是-lc
)添加到链接脚本中。