我要努力工作,加油!

linux 程序运行时,提示找不到 xx.so.x,如何查询linux程序需要哪些库,linux链接库的添加方法

linux笔记 向日葵智能 17℃ 0评论

问题原因查找

今天打算再linux中运行 test.out 程序时,提示

# ./test.out 
./test.out: can't load library 'libfreetype.so.6'

出现这种提示有两种可能,一是确实没有这个库,再就是有这个库,但是运行程序时,系统不知道去哪里找这个库。于是,执行ldd命令,可以看到:

# ldd test.out
    ...
    libfreetype.so => /usr/local/lib/libfreetype.so(0x00007f767af0a000)
    ...

也在预料中,很多库都会在这个目录里。

解决问题

可以将该路径加入环境变量:

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

再次运行,依然报同样的错误。稍稍思考一下,知道应该将该路径加入LD_LIBRARY_PATH环境变量里,这个环境变量看其名字就知道是专为库设置的。

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

再次运行,发现 test.out 程序正常运行了。

将环境变量加入 bashrc

之所以进行这一步,是因为 export 命令只对当前终端起作用,关闭该终端,再打开,就必须再次执行export一次,这样就显得比较麻烦。所以可以将export加入bashrc文件,这样每次打开终端,系统会自动执行export,就一劳永逸了。

sudo vim ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH  # 在文件最后加入
source ~/.bashrc

搞定。

转载请注明:xrk智能 » linux 程序运行时,提示找不到 xx.so.x,如何查询linux程序需要哪些库,linux链接库的添加方法

喜欢 (2)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址