1、编译器gcc(静态库和动态库的制作与使用)
2、调试器gdb(常用命令,调用内存错误)
3、工程管理器 make(Makefile编写、多目录的Makefile的编写)
库函数(保存在库文件中)printf scanf strcpy strcat
库文件:保存函数和变量,里面的函数和变量只能使用,看不到其实现
extern:该函数在其他文件已经定义
库的分类
静态库.a 在编译阶段加载到可执行文件中
动态库.so 保存的函数和变量在执行阶段加载到可执行文件中
使用静态库和动态库的区别
**(可执行文件的区别)
1、使用静态库编译出来的可执行文件的大小>使用动态库编译出来的可执行文件的大小-----影响到内存的开销
2、使用静态库编译出来的可执行文件的执行速度快于使用动态库编译出来的可执行文件的执行速度
3、使用静态库编译出来的可执行文件升级<动态库
4、使用静态库编译出来的可执行文件程序部署>动态库
程序部署就是摆放位置
库文件的存放路径:系统运行所需的库文件:/lib 第三方软件和工具运行所需要的库:/usr/lib
编译时,编译器会自动到这两个目录里找所需要链接的库文件。
制作静态库
1、将目标源文件编译成目标文件:gcc -c 目标源文件(gcc -c add.c) -->(生成add.o文件)
2、使用ar工具制作静态:ar -rcs(库不存在就创建,存在就更新)所要生成的库文件的名字(lib+库名+后缀) 目标文件 arc -rcs libadd.a add.o
使用静态库
-l:指定加载哪个静态库
使用方法:-l加库名
-L:指定加载库的存放路径