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

 

 

 

 

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、

 

 

 

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宏

posted @ 2020-01-06 22:03  codestacklinuxer  阅读(150)  评论(0编辑  收藏  举报