gcc 中weak弱函数
1、weak弱函数
weak 函数用于定义变量或者函数。弱函数一般用于多个模块间的交互接口
int __attribute__((weak)) test_lib_a(int a, int b)
{
printf("weak %s\n", __FUNCTION__);
return a + b;
}
2、注意事项
1、weak属性只会在静态库(.o .a )中生效,动态库(.so)中不会生效
2、weak 只对链接器生效,即链接器在允许两个同名符号表(一个强符号、一个或多个弱符号),编译器不允许在同一个文件中存在两个同名的符号。
3、链接器优先链接定义为非weak的函数或变量,如果找不到再连链接weak函数或者变量,若都没有,静态链接则编译时报错,若动态链接时则系统无法启动
4、对于动态库,weak属性毫无作用,调用哪个符号,取决于库链接顺序。
5、weak 在C99中没有,属于编译器外扩的,gcc中使用的是__attribute__((weak)
6、库链接顺序:从左到右,越基础的越靠右。(即在左边找到了需要符号,则会用靠近左边库中的符号)
参考:
https://www.valvers.com/open-software/gcc/weak-function-attributes/
https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html
https://www.cnblogs.com/linhaostudy/p/9237357.html
https://zhuanlan.zhihu.com/p/369345831
gcc 中weak弱函数的更多相关文章
- GNU C/C++ __attributes__ GCC中的弱符号与强符号
最近在看一些源代码,遇到了一些使用__attribute__修饰函数和变量的属性方面的代码,不是太了解,很是汗颜,再此做个总结: GCC使用__attribute__关键字来描述函数,变量和数据类 ...
- GCC中的弱符号与强符号
GCC中的弱符号与强符号 我们经常在编程中碰到一种情况叫符号重复定义.多个目标文件中含有相同名字全局符号的定义,那么这些目标文件链接的时候将会出现符号重复定义的错误.比如我们在目标文件A和目标文件B都 ...
- GCC中的强符号和弱符号及强引用和弱引用
1. 强符号和弱符号 1.1 u-boot和kernel中的__weak指令 u-boot和kernel比较普遍地使用了__weak来定义函数. 在include\linux\compiler-gcc ...
- GCC 中零长数组与变长数组
前两天看程序,发现在某个函数中有下面这段程序: int n; //define a variable n int array[n]; //define an array with length n 在 ...
- gcc中动态库和静态库的链接顺序
so文件:动态库a文件: 静态库exe文件:可执行程序(linux下以文件属性来标示是否是可执行文件,与后缀名无关) 经过自己写的一些测试程序,大致了解了下gcc中链接顺序问题,总结出以下几点:1,动 ...
- [转] GCC 中的编译器堆栈保护技术
以堆栈溢出为代表的缓冲区溢出已成为最为普遍的安全漏洞.由此引发的安全问题比比皆是.早在 1988 年,美国康奈尔大学的计算机科学系研究生莫里斯 (Morris) 利用 UNIX fingered 程序 ...
- GCC 中的编译器堆栈保护技术
GCC 中的编译器堆栈保护技术 前几天看到的觉得不错得博客于是转发了,但这里我补充一下一些点. GCC通过栈保护选项-fstack-protector-all编译时额外添加两个符号,__stack_c ...
- GCC中的内嵌汇编语言
原文可参考:GCC中的内嵌汇编语言 一.声明 虽然Linux的核心代码大部分是用C语言编写的,但是不可避免的其中还是有一部分是用汇编语言写成的.有些汇编语言代码是直接写在汇编源程序中的,特别是Li ...
- gcc中关于静态库和动态库使用(转)
转自:http://blog.chinaunix.net/uid-25871104-id-3069931.html 1,如何生成静态库 静态库只是一堆object对象的集合,使用ar命令可以将.o文件 ...
- gcc中的内嵌汇编语言(Intel i386平台)
[转]http://bbs.chinaunix.net/thread-2149855-1-1.html 一.声明 虽然Linux的核心代码大部分是用C语言编写的,但是不可避免的其中还是有一部分是用汇 ...
随机推荐
- SQL Server数据库日常检查
1.1代码检查从昨天到现在,SQL代理Job有没有运行失败的,会把运行失败的Job名字,步骤,运行时间,错误等级,错误原因罗列出来,方便查看. ----1.1 Check Job Fail List ...
- BUUCTF-[SUCTF2019]EasySQL
[SUCTF2019]EasySQL 这个连闭合都测试不出来,就有点无从下手了. 额,随手输了一个1;show tables;出来了表名.一通操作之后,点开了别人的wp,学习了一波. 然后知道了题目中 ...
- 基于FLink实现的实时安全检测(一段时间内连续登录失败20次后,下一次登录成功场景)
研发背景 公司安全部目前针对内部系统的网络访问日志的安全审计,大部分都是T+1时效,每日当天,启动Python编写的定时任务,完成昨日的日志审计和检测,定时任务运行完成后,统一进行企业微信告警推送.这 ...
- [NOI Online 2022 提高组] 如何正确地排序
\(\text{Solution}\) 当 \(m=2\) 时,\(ans=2n\sum a_{i,j}\) 当 \(m=3\) 时 当然先套路地考虑某一行的贡献,记为第 \(x\) 行 则当取 \( ...
- JZOJ 2933. 【NOIP2012模拟8.7】找位置
题目大意 有 \(n(1 \leq n \leq 10000)\) 个城镇,由 \(1 \leq m \leq 50000\) 条无向道路连接.给出 \(k(1 \leq k \leq 5) 个超市\ ...
- 钓鱼攻击之:OFFICE CVE-2017-11882
钓鱼攻击之:OFFICE CVE-2017-11882 目录 钓鱼攻击之:OFFICE CVE-2017-11882 1 环境准备 2 利用过程 2.1 生成验证POC 2.2 CVE-2017-11 ...
- 解析关于Tomcat Servlet-request的获取请求参数及几种常用方法
摘要:本文主要讲解Tomcat之Servlet-request请求参数.Servlet转发机制.常用方法 本文分享自华为云社区<浅谈Tomcat之Servlet-request获取请求参数及常用 ...
- 如何创建一个浏览器版的`Window11`
如何创建一个浏览器版的Window11 我们接下来将创建一个在浏览器运行的Window11,可以先看看效果图 这是基于Windows 11 in React修改的功能,我们接下来就将使用Windows ...
- python路径含空格导致打开文件报错
2023.02.14更新: python中使用os.listdir不行,但是可以用os.walk,可以绕过空格的问题. 在windows中总有奇怪的问题,比如路径或文件名带空格,打开文件就会报错. 一 ...
- vue3 使用watch 监听多个数据
// 监听时间选择 watch( [ internalSubmTimer, internalTimer, externalSubmTimer, externaTimer, callbackTimer, ...