0
点赞
收藏
分享

微信扫一扫

各种知识收集1(持续更新)

各种知识收集1(持续更新)_动态库

 

各种知识收集1(持续更新)_优先级_02

 

 

 

wchan表示导致进程睡眠或者等待的函数

 

SS iproute2,nslookup,dig
从某种意义上说,iproute工具集几乎可以替代掉net-tools工具集,具体的替代方案是这样的:
用途 net-tool(被淘汰) iproute2
地址和链路配置 ifconfig ip addr, ip link
路由表 route ip route
邻居 arp ip neigh
VLAN vconfig ip link
隧道 iptunnel ip tunnel
组播 ipmaddr ip maddr
统计 netstat ss

​​https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html​​​  constructor属性可以使函数在main()函数之前执行,destructor属性会让函数在main()函数完成或调用exit()之后被执行。
这些属性可以用来在程序运行之前初始化所需的数据,非常有用。而且这两个属性都还可以指定优先级,控制使用修饰的函数的执行顺序,
优先级的值必须大于100,因为0到100之间的优先级由gcc来使用,优先级的值越小,优先级越高,会优先执行。另外还有一点需要注意,
如果是接收到信号退出,例如SIGSEGV或者SIGKILL信号,destructor属性修饰的函数则不会被调用。具体可以参见《Declaring Attributes of Functions》 。
我们先来看看不指定优先级时,调用的顺序是什么样的,示例程序如下:

 

2、

各种知识收集1(持续更新)_优先级_03

 

 

 

3、

__attribute__ ((packed)); 不进行内存对齐
1.__attribute__((__visibility__("defaullt"))) 设置函数符号对外的可见性,如果设置为hidden则其他so库不可见
2.gcc编译的时候 可用-fvisibility=hidden指定所有的函数对外的可见性
1.
-ffunction-sections , 编译的时候为每个function分配独立的section
-fdata-sections , 编译的时候为每个data item分配独立的section
--gc-sections,会使ld删除没有被使用的section
上面3个一起使用,在最终输出的exe中,没有被引用到的函数和变量会被删除

2
-w 关闭所有告警
-werror 将警告信息当做错误对待
-wall 允许发出gcc的所有警告
__attribute__((constructor)) void init() :设置为构造函数属性时,会在加载动态库时自动调用
__attribute__((destructor)) void deinit():设置为析构函数属性时,会在卸载动态库时自动调用
make -f 指定Makefile

Makefile的gcc参数:-Dtest 表示指定test宏

http代理服务器(3-4-7层代理)-网络事件库公共组件、内核kernel驱动 摄像头驱动 tcpip网络协议栈、netfilter、bridge 好像看过!!!! 但行好事 莫问前程 --身高体重180的胖子



举报

相关推荐

0 条评论