首页 > 代码库 > 018_C语言静态库动态库

018_C语言静态库动态库



linuxC语言编程环境

头文件目录:/usr/include/

库目录:/usr/lib/

 

动态库与静态库的区别:在计算机程序源代码需要通过翻译、汇编、链接过程而生成可执行文件,再由加载器加载到内存,两者区别就在于程序加载时链接到相应库的方式不同,程序编译时指定了静态库,编译后可直接运行,而编译时指定动态库时,编译后还要先指定库的路径。

 

静态库:

ar -rs libmy_math.a *.o生成静态库libmy_math.a

ar -t查看静态库

gcc test.c -L. -lmy_math - o test 使用静态库编译生成可执行文件

 

动态库:

gcc -fPIC *.o 生成动态库对应的.o文件

gcc -shared -o libmy_math.so *.o生成动态库

gcc test.c -lmymy_math -o test使用动态库编译生成可执行文件

移动my_math.h文件到/usr/include/

移动libmy_math.so文件到/usr/lib/

当不移动my_math.hlibmy_math.so文件时,必须配置环境指定库的路径:

export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

echo $LD_LIBRARY_PATH:.    查看环境有没有手动配置

更新动态库:当实现接口的函数功能发生变化时,只需重新生成动态库覆盖原来的动态库即可,而不需要重新编译test.c文件

 

第三方软件:

框架:带主函数的C文件

组件:函数库