Gnu: binutils: ld: .gnu.warning.链接时的主动警告 glibc

这个是一个gnu的extension,glibc会使用这个功能,标记即将被淘汰的符号,产生链接时的警告,比如:

cpp 复制代码
/* When a reference to SYMBOL is encountered, the linker will emit a
   warning 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'")

效果

cpp 复制代码
/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文件,在链接时才会报错。

相关推荐
R6bandito_4 天前
C/C++常用编译工具链:GCC,Clang
c语言·开发语言·汇编·c++·经验分享·gnu
Fr1nGeLove5 天前
GDB(GNU Debugger)的使用教程
服务器·gnu
qq_172805595 天前
Minimalist GNU for Windows
服务器·windows·gnu
程序员JerrySUN21 天前
U-Boot工程
linux·嵌入式硬件·物联网·系统架构·arm·开源软件·gnu
weixin_4769582721 天前
GCC(GNU Compiler Collection)部分参数解释
服务器·gnu
时光飞逝的日子1 个月前
GNU链接器(LD):输入分区的垃圾回收及保护处理(KEEP命令)介绍
垃圾回收·ld·保护·gnu链接器·keep
韩楚风1 个月前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
湖光秋色1 个月前
Linux中find命令详解
linux·gnu·find
zyplanke1 个月前
避免glibc版本而报错,CentOS等Linux安装node.js完美方法
centos·node.js·glibc
打工小熊猫1 个月前
如何在CMakeList项目中集成GNU Autotools 构建模块
c++·gnu