Linux下编译.c文件时sqlite3找不到库文件如何解决?(undefined reference to `sqlite3_open')

Linux下编译.c文件时sqlite3找不到库文件如何解决?(undefined reference to `sqlite3_open'),第1张

建议最好写个makefile,包含上库文件

动态的路径一般是/usr/lib/

静态库一般可能是安装目录

可以试试rmp -q

或者find / -name

sqlite3

export LD_LIBRARY_PATH=/usr/local/lib

就可以了。但这个方法是一次性的,这个设置只保存在内存,关闭终端再开启就没了。

网上搜索后发现~/.bashrc文件在每次登陆和每次打开

shell 都读取一次,~/.bash_profile在登陆时读取一次,所以可以把配置语句写进其中一个:

[plain] view plain copy

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

可以直接命令行输入:

[plain] view plain copy

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib' >>~/.bashrc

也可以用vim编辑器打开编辑。

这样每次打开终端,系统就实现自动配置了。

Ubuntu教程:链接不到库提示库文件不存在的解决办法

/home/bear/QtProgram/opencv001-build-desktop/opencv001: error while loading shared libraries: libopencv_highgui.so.2.3: cannot open shared object file: No such file or directory

error while loading shared libraries: libXXX.so.1.2.3: cannot open shared object file

此时你可以locate libXXX.so.1.2.3 (如果你的文件系统比以前有了变化,如安装了可能是需要的库的开发包,则需要 locate -u 一下)

然 后如果发现了libXXX.so.1.2.3的确存在,就把libXXX.so.1.2.3所在的目录加入到 /etc/ld.so.conf 中,或者在 /etc/ld.so.conf.d/ 下新建一文件,如 XXX.conf ,其内容是libXXX.so.1.2.3所在的目录。

如果发现libXXX.so.1.2.3不存在,你可能没安装包含库的程序。一般google一下“XXX linux”就能找到相应的软件。

如果提示是error while loading shared libraries: libXXX.so,但你的系统上有libXXX.so.5,你可以为libXXX.so.5

做一个软链接 ln -s libXXX.so.5 libXXX.so

如,我执行一个ACE开发包中的样例程序时,出现以下提示:

./logging_app: error while loading shared libraries: libACE.so.5.4.7: cannot open shared object file: No such file or directory

[root@www.linuxidc.com ld.so.conf.d]# locate libACE.so.5.4.7

/opt/ace/ace/libACE.so.5.4.7

/opt/ace/lib/libACE.so.5.4.7

[root@www.linuxidc.com ld.so.conf.d]# vi ace.conf

ace.conf中只有一行: /opt/ace/lib

然后再执行 ldconfig

OK,现在执行logging_app就没有错误了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/6261679.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-19
下一篇 2023-03-19

发表评论

登录后才能评论

评论列表(0条)

保存