编译成动态库

1.所需的文件:main.c main.h test.c test.h
将着几个文件编译成动态库:libtest.so

gcc test.c -fPIC -shared -o libtest.so
编译完成后会在当前目录下生产libtest.so这个文件
将main.c与动态库libtest.c链接生成可执行文件main:
gcc test.c -L./ -ltest -o main
执行ldd main 可以查看如何调用动态库中的函数

编译参数解析:
-shared:表示生成动态链接库,不使用该标志外部程序无法链接,相当一个可执行文件
-fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。
-L:制定所要链接的库所在的目录(-L后面紧跟路径)
-ltest:编译器查找动态连接库时的命名规则,即在给出test名字前面加上lib,后面加上.so来确定库的名称
LD_LIBRARY_PATH:这个环境变量指示动态连接器可以装载动态库的路径。

或者将libtest.so拷贝到/lib目录下



作者:only_cherry
链接:https://www.jianshu.com/p/e90218cee467
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值