网站接入商排名,wordpress后台很慢,千海网站建设 小程序,效果图专业制作一.库的概念
库是写好的现有的#xff0c;成熟的#xff0c;可以复用的代码。 本质上来说库是一种可执行代码的二进制形式#xff0c;可以被操作系统载入内存执行。库有两种#xff1a;静态库#xff08;.a、.lib#xff09;和动态库#xff08;.so、.dll#xff09;。…一.库的概念
库是写好的现有的成熟的可以复用的代码。 本质上来说库是一种可执行代码的二进制形式可以被操作系统载入内存执行。库有两种静态库.a、.lib和动态库.so、.dll。 静态链接: 库随着程序一起编译成为可执行程序的一部分空间开销大运行速度快 动态链接: 库只有在程序执行时被用到时才会被加入到内存中空间开销小运行较慢
二.Linux环境下制作静态库
首先使用-c选项将c文件编译为二进制文件(.o)然后使用ar工具将二进制文件制作为静态库。 ar rcs [libXXXX.a] [所用到的.o文件] 其中库文件名字XXXX可随意编写但必须以lib为开头.a为结尾 使用静态库的过程中使用gcc编译c文件时需要加上静态库的存储目录以及名称。 如 gcc test.c ./lib/libtest.a
注意: 源文件中必须要有函数的定义才可正常编译若在源文件中没有包含库文件中的函数定义系统会为其自动隐式定义可正常执行但会报错使用-Wall选项可以查看有报错信息 所以在使用静态库的时候一般都会在源文件中包含一个头文件内部是所有的静态库函数定义。 在头文件中要包含一个头文件守卫防止重定义。 总结使用过程 gcc [c文件] [库文件目录及名称] -I [头文件目录] -o [可执行文件命名] 如gcc test.c ./a/libmymath.a -I ./b/ -o test.exe
gcc中选项: -I 指定头文件目录 -o 指定文件名称 -Wall 查看报错信息 -g 增加调试语句 -c 只做预处理编译汇编操作得到二进制文件不进行连接操作。