Linux动态库和静态库创建和简单使用

概述:库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。

一,静态库:
静态函数库,是在程序执行之前(编译的时候)就加入到目标程序中去了;
这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。
注:C标准库本身存储为/usr/lib/libc.a,它包含ANS1/ISO标准指定的函数,比如printf。对每一个C程序来说,libc.a都默认被链接。
生成静态库命令:

gcc -c file1.c -o file1.o
gcc -c file2.c -o file2.o//使用gcc编译器编译为目标文件
ar rcs  libname.a filename.o(.a程序就是静态库)//使用相关命令来生成静态库

一旦你创建了一个静态函数库,你可以使用它了。你可以把它作为你编译和连接过程中的一部分用来生成你的可执行代码。如果你用gcc来编译产生可执行代码的话,你可以用“-l”参数来指定这个库函数。你也可以用ld来做,使用它的“-l”和“-L”参数选项。
注:使用时在编译阶段加上即可 gcc main.c -lname(砍头取尾) -L ./(指定在当前路径找)-l(类似于头文件,优先在根目录lib里面去找)
二,动态库
动态库是在程序执行时加入到可执行程序中去的,

动态库的生成和使用:
第一步:gcc -shared -fpic filename -o libname.so 生成libname.so文件
-shared 指定生成动态库;
-fpic 标准,FPIC选项作用于编译阶段,在生成目标文件时需要用到该参数,来生成位置无关的代码。
第二步(使用):gcc main.c -lname(砍头取尾)  -L ./(编译和静态库相同)

每个动态库都有个特殊的名字,称作“soname”。soname名字命名必须以“lib”作为前缀,然后是函数库的名字,然后是“.so”,最后是版本号信息。不过有个特例,就是非常底层的C库函数都不是以lib开头这样命名的。
执行程序时需要加上动态库,则:
1.可以直接拷贝到根目录下的/usr/lib里面直接使用
2,其余方法可以自行百度,linux动态库的使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值