gcc 中weak弱函数
2024-09-08 19:02:11
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
最新文章
- VIM教程
- 进击的Python【第十章】:Python的socket高级应用(多进程,协程与异步)
- 关于欧几里得算法求最大公约数,即OJ1029的参考解法
- EF 只更新部分字段
- Android之adb
- Colors
- web优化(一)
- linux 查看ip地址
- 关闭或启动linux防火墙后,docker启动容器报错
- postgresql开启网络连接
- vue特殊属性 key ref slot
- SUID、SGID、粘滞位
- IC 设计中DFT的Boundary Scan功能
- IDEA安装使用 VisualVM 及VisualVM 远程监视
- open-falcon之query
- POJ3208魔鬼数
- 读书笔记_Effective_C++_条款三十三:避免遮掩继承而来的名称
- 【软引用】弱引用 图片的加载与缓存 OOM
- poj3680
- Q239 滑动窗口最大值