Linux下终端命令链接工程目录下的动态库

今天gcc链接编写的动态库时出错了,首先要搞清楚为什么出错,是命令错误还是路径问题或者是库不对应。

ls命令查看当前目录下的动态运行库为libtest.so
然后我执行编译命令时链接动态库

-L 表示链接动态库的路径
-L. 表示动态库在当前路径下
-l后边加动态库的名字,应该省略库的lib三个字符,比如链接libhello.so时只需要-lhello即可
gcc test.c -o test -L. -ltest

编译成功之后运行test文件发现还会报错,提示找不到库?
此时有些人就有疑问了,为什么我gcc已经链接了当前目录的动态库运行时还会报错找不到库呢?
首先,不知道你们有没有注意到:如果gcc报错没有库时跟运行时报没有库时的错误是不一样的,因为gcc编译时我们只是将当前目录下的动态库链接到程序中了,它仅仅是告诉编译器我的库的位置在当前目录,让编译器链接库时在当前目录下找,如果不加-L.时,他会报错系统默认配置文件下/usr/bin/ld中没有这个库,但是系统在运行程序时它如果提示没有库,是因为在加载库时错误,没有库文件或者目录,打不开库。
知道问题之后发现,此时我们有两种方法,一、把库文件拷贝到系统查找库时的路径中,二、告诉系统把当前路径添加到系统环境变量中,让系统查找库时在这个路径下查找。

export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH	///注意有个. 代表当前路径,
						//如果要添加其他路径只需要将.换成目标路径,
						//这种方法只有临时有效,重启后丢失配置,
						//如果需要一直保存此路径可以修改配置文件,
						//具体方法在此不多做讲解,自行百度

此时再运行程序发现不会报错了
你学会了吗?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值