linux共享库编译的一些命令

在这个例子中,message.c是一个接口函数的具体实现,它要被编译成一个共享的库函数。main.c是一个调用了该共享库的一个函数(在这里没有提供message.c的一些接口,即假设接口已知)。

由于共享库会被许多程序共享,所以需要以一种位置无关的编译方式编译它。gcc -fPIC -c message.c。PIC标志告诉gcc产生的代码不要包含对函数和变量具体内存位置的引用。
gcc -shared -o libmessage.so message.o,使用shared标志libmessage.so是共享库。

用gcc通知连接器使用共享函数库资源libmessage.so:
gcc -o goodbye -lmessage -L. main.o。
-lmessage标记告诉gcc在连接时用共享的函数库libmessage.so. -L.说明gcc 函数库可能位于当前目录。注意这里的-lmessage是-l + message的组合。

导出LD_LIBRARY_PATH环境变量,这里有很多地方要注意。可以cd到工作目录下运行命令export LD_LIBRARY_PATH=`pwd` 这里`不是单是引号。该环境变量可以包含额外的函数库搜索路径。运行时连接器将搜索这些额外的路径以发现没有在标准路径中找到的函数库。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值