Linux常见错误整理

Linux中编译项目工程常见错误归档

版权声明:本文为博主原创文章,未经博主允许不得转载。

Error 1:Cannot find -lXXX

1.出现下面的错误提示:
/usr/bin/ld: cannot find -lXXX
其中XXX表示函数库文件名称,即XXX.so
其命名规则是:lib+库名(即XXX)+.so

错误原因可能有三:

系统没有安装相对应的lib
对应的lib版本不对
lib的symbolic link不正确,没有连接到正确的库文件

2.Linux系统寻找动态库的路径设置文件是/etc/ld.so.conf,可以进行查看,根据需求进行增加操作
若共享库文件安装到了其他非lib目录下,但又不想在/etc/ld.so.conf中加路径,那可以export一个全局变量LD_LIBRARY_PATH

3.若工程目录中已经给出编译好的.so文件,将其连接到/usr/local/lib中即可

1
sudo ln -sf /yourpath/XXX.so /usr/local/lib

注意:直接拷贝.so文件至/usr/local/lib中是无效的,要么建立链接,要么执行ldconfig命令
ldconfig命令主要用于在默认搜索目录中(lib和usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库,进而创建出动态装入程序(ld.so)所需的链接和缓存文件,缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表。

4.PC端编译的so文件无法在arm linux中使用
否则会出现错误提示:
/usr/bin/ld: skipping incompatible…
/usr/bin/ld: cannot find -lXXX

Error 2:error while loading shared libraries:XXX.so.X

出现下面的错误提示
error while loading shared libraries:XXX.so.X

错误原因及解决方法与上面第一个错误相同

Linux下搜狗输入法不能输入中文的解决方案

方法一:重启搜狗输入法
通过下面的命令重启搜狗输入法,看重启后是否可以正常使用:

1
2
3
~$ killall fcitx
~$ killall sogou-qinpanel
~$ fcitx

方法二:检查修复安装依赖
因为我之前是可以正常使用的,所以应该不是安装依赖的问题。刚安装好的朋友如果无法使用,可以用下面的命令排除或修复安装依赖问题

1
~$ sudo apt-get install -f

方法三:删除配置文件,重启搜狗
ubuntu下搜狗的配置文件在 ~/.config下的3个文件夹里:
SogouPY、SogouPY.users、sogou-qimpanel
删除这3个文件夹,然后重启搜狗。
我使用这种方法后解决了无法输入中文问题