一、进程环境
C程序存储空间布局:
正文段:只读、存放CPU执行的机器指令,可共享
数据段:也叫初始化数据段。包含程序中需要明确赋值的变量,如 int max =99;
BSS段:也叫未初始化的数据段,在程序开始执行前,内核将此段中数据初始化为0或空指针,如long sum[100];
栈:存放自动变量(即局部变量),以及每次函数调用时所需要保存的信息
堆:通常在堆中实现动态存储分配,位于BSS和栈之间
其中,如寄存器变量或全局变量存放在数据段或BSS段。图示如下:
二、动态库与静态库
1.静态库:链接阶段直接被链接到二进制文件中,生成文件体积大,但不再依赖于库。
2.动态库:运行阶段加载
1)C文件生成动态库 gcc -shared a.c -o libdb.so
2)调用方法:
运行时调用: 如调用libxxx.so库中的func()函数,则:gcc b.c -o bapp -l xxx.so