1.每个进程都有对应的环境变量表,内核分配和维护的
2.进入shell命令页面后,env显示的默认是bash的环境变量
3.环境变量分为全局和局部,
全局:当前shell和其子进程都是可见的
局部:只有当前shell可见
4.将局部设置成全局:export name
5.删除环境变量:unset name
6.查看环境变量:echo $name
7.环境变量可以记录一些信息,比如路径信息,当进程读取这个环境变量信息时,就可以读取路径信息
8.特殊环境变量PATH:以冒号分隔的多个路径,是bash进程对命令的检索路径
9.家目录下有个.bashrc脚本文件,每次启动bash都要执行这个文件,PATH=$PATH:.
10.main函数 三个参数:int argc ,char * argv[],char * envp[]
11.把所有的功能都写在一个.c源文件中,编译时间会很长,不易于维护和升级,不易于协作开发
12.库文件分静态库和动态库
13.静态库文件的命名:libxxx.a
14.静态库是把多个.o文件打包成一个.a文件,ar -r libxxx.a aa.o bb.o
15.链接静态库就是将库中被调用的代码复制到调用模块中
16.静态库和主调函数不在一个目录下的话,编译时:gcc main.c -lmath -L..
17.-l 表示找什么库,-L表述寻找路径
18,静态库的路径设置环境变量 LIBRARY_PATH,设置后,编译时:gcc main.c -lmath
19.动态库:libxxx.so,不是复制到调用函数中,而是嵌入指令,跳转到执行函数中,
20. gcc -c -fpic xxx.c
21. gcc -shared xxx.o yyy.o -o libxxx.so
22.链接器负责执行时库的跳转,需要配置环境变量:LD_LIBRARY_PATH
23. PATH 给bash用的,用来找命令
LIBRARY_PATH 给gcc用的,用来在编译阶段找库
LD_LIBRARY_PATH 给链接器用,在执行时,找库跳转
24.动态库的动态加载:包含的头文件#include <dlfcn.h>,并链接该库 -ldl
25.打开共享库,将共享库载入内存 dlopen函数
26.dlsym返回动态库中的函数地址
27.dlclose从内存中卸载动态库
28.dlerror获取错误信息
29.标准输入 键盘 stdin
标准输出 显示器 stdout 有缓冲区
标准错误 显示器 stderr 无缓冲区
30. 编译时:gcc load.c -o load -ldl
31.通过标准错误打印错误信息perror
32.man 1 命令
man 2 系统调用,接口函数
man 3 标准库