linux下动态库与静态库

 

体验一下linux下编写和使用动态库与静态库,范例:helloworld程序。

 

首先编写静态库:

hellos.h

   

 

hellos.c

 

 

开始编译成静态库:

gcc -c -o hellos.o hellos.c

ar cqs libhellos.a hellos.o

 

main.c

 

使用静态库编译:gcc -o hello main.c -static -L. -lhellos

 

然后运行hello,输出:
print in static way: Hello World!
删除 libhellos.a和 hellos.*后, 程序仍然正常运行。

 

 

编写动态库

 

hellod.h

 

hellod.c

 

编译生成动态库:gcc -shared -o libhellod.so hellod.c

这样,libhellod.so就是生成的动态库。

export LD_LIBRARY_PATH=/root/program/link/dynamic/:$LD_LIBRARY_PATH,指定库文件路径。

如果系统装了SELINUX的话,要执行chcon -t textrel_shlib_t /root/program/link/dynamic/libhellod.so改变权限。

 

main.c

 

gcc -o hello main.c -L./ -lhellod
然后运行hello可以看到输出
print in dynamic way: Hello World!

如果删除库文件,会出现:./hello: error while loading shared libraries: libhellod.so: cannot open shared object file: No such file or directory

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值