一篇文章解决Linux动态库创建和使用中的常见问题

学校(湘大)要求做Linux实验,实验一是掌握安装Linux虚拟机,我安装的是VMware Workstation16

实验二则是创建静态库和动态库并使用,静态库没啥好说的一步步来就行,但是动态库的指令细节不对就会遇到很多麻烦

1、权限不够问题

这个问题最好解决,直接

$ su root

 然后输入密码就可以了

2、warning:implicit declaration of function '函数名' [-Wimplicit-function-declaration]

 

这个问题是相关函数的头文件出错了,检查一下头文件

3、gcc main.c -o test出错

 这个属于是直接都没链接动态库,不报错才怪了

4、/usr/bin/ld:找不到-lxxxx

collect2:error:ld returned 1 exit status

这个问题可能有两个原因:

  • 你打包编译文件生成的.so文件没有发送到/usr/lib文件下,所以链接检索的时候找不到;

你只需要cp一下就好了:

cp libxxxx.so /usr/lib

  • 另一个问题,gcc指令连接动态库的地址错了;

你检查一下你的gcc指令.L<路径>

路径一定要正确

5、最烦人也是最容易出现的问题:undefined reference to '函数名'

  • 第一检查头文件有没有定义——定义了
  • 第二检查main.c文件里有没有忘记引用动态库函数头文件——引用了
  • 但是还是出错

重点来了

你的gcc指令真的写对了吗?

gcc .c文件 -o 想要生成的项目文件名 -L./(这个的意思是动态库在当前目录)  -l动态库名

管你们老师是怎么教的,也不用去看网上的代码,只要你前面的步骤没出问题,按照这个模板来一定没错!! 

这个指令的各个部分是可以换来换去的,所以版本不一样很正常,但是这个模板一定没错

我最后成功的指令是:

gcc main.c -o main.out -L./ -lIOSort

 还有问题可以评论区问我,我以后遇到问题也会更新!

------------------------------------------------------------------------------------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值