本文主要是介绍Gnu: binutils: ld: .gnu.warning.链接时的主动警告 glibc,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这个是一个gnu的extension,glibc会使用这个功能,标记即将被淘汰的符号,产生链接时的警告,比如:
/* When a reference to SYMBOL is encountered, the linker will emit awarning message MSG. */
/* We want the .gnu.warning.SYMBOL section to be unallocated. */
#define __make_section_unallocated(section_string) \asm (".section " section_string "\n\t.previous");#define link_warning(symbol, msg) \__make_section_unallocated (".gnu.warning." #symbol) \static const char __evoke_link_warning_##symbol[] \__attribute__ ((used, section (".gnu.warning." #symbol __sec_comment))) \= msg;link_warning (pthread_attr_setstackaddr,"the use of `pthread_attr_setstackaddr' is deprecated, use `pthread_attr_setstack'")
效果
/tmp/ccVxpFwZ.o: In function `main':
warning1.c:(.text+0xe): warning: the use of `pthread_attr_setstackaddr' is deprecated, use `pthread_attr_setstack'
需要注意,如果函数和main函数是再一个编译单元,不会trigger这个warning。需要变成成单独的o/so文件,在链接时才会报错。
这篇关于Gnu: binutils: ld: .gnu.warning.链接时的主动警告 glibc的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!