!
也想出现在这里? 联系我们
广告位
当前位置:首页>教程分享>服务器教程>linux下运行程序提示error while loading shared libraries,找不到.so

linux下运行程序提示error while loading shared libraries,找不到.so

1,事情经过

我在一个单独的文件夹内编译一个main.c文件

gcc main.c -o ecrtexe -I/opt/etherlab/include -L/opt/etherlab/lib -lethercat

可以编译成功,但是当我运行时,如下

sudo ./main

./main: error while loading shared libraries: libethercat.so.1: cannot open shared object file: No such file or directory

告诉我找不到so库

原因是我的libethercat.so.1库不在Linux系统的默认搜索库位置。

2,解决办法

sudo gedit /etc/ld.so.conf

添加如下,并保存:

include /etc/ld.so.conf.d/*.conf
/opt/etherlab/lib

其中/opt/etherlab/lib就是我自己的库所在的位置,

然后运行如下命令,让我们的添加生效,使所有的库文件都被缓存到文件/etc/ld.so.cache中。

sudo ldconfig

然后就可以正常编译了。

3,后话

其实,对于由普通用户自己编译生成的.so库文件,比较好的做法是:

将这些.so库文件的路径,用export指令加入到~/.bash_profile中的LD_LIBRARY_PATH变量中。LD_LIBRARY_PATH是程序运行需要链接.so库时会去查找的一个目录;
~/.bash_profile是登陆或打开shell时会读取的文件;
这样,每次用户登录时,都会把这些.so库文件的路径写入LD_LIBRARY_PATH,这样就可以正常地使用这些.so库文件了。

给TA打赏
共{{data.count}}人
人已打赏
服务器教程

ROOT下执行文件失败提示“READ-ONLY FILE SYSTEM”解决办法

2021-4-17 18:32:15

服务器教程

windows server 2016提示无法创建新的分区也找不到现有的分区解法

2021-4-17 18:32:17

声明 本站上的部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。无意侵害您的权益,请发送邮件至 [email protected] 或点击右侧 私信:吉吉国王 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
OneEase