ubuntu解决程序编译运行的依赖问题方法论

Posted by LuckXiang on November 12, 2017

一般来说,问题有三类,一类是编译程序的时候找不到依赖的库,一类是别处拷贝来的程序没有办法在本地运行。缺少相关的动态库,还有一类是apt-get 安装程序的时候提示有依赖关系安装失败。

编译问题

编译问题很容易解决,缺什么找什么,如果是交叉编译,则需要下载相关源代码编译。如果是本地运行的,则可以考虑通过apt-get直接安装,需要注意的是编译相关的库都是以lib开头的,这样安装的就是相关的头文件和库文件,不是lib开头的一般都是可执行程序。

可执行程序缺少相关动态库

解决这种问题可以分三个步骤

    1. 如果是64位系统,首先用file命令看看是不是32位程序,如果是,确定已经安装32位兼容库,16.04之前可以安装ia32-libs,16.04以后的系统提供来新的替代库lib32ncurses5、lib32z1。
  • 2.通过ldd命令查看缺少的动态链接库

  • 3.安装apt-file工具,然后用apt-file search xxxx查看具体的安装包,如果找不到,最好google查一下,这个so库有可能是一个软连接。找到安装包名字以后,就可以安装了,一般来说,apt-get的时候需要带上xxx-dev才能搜索到需要的安装包,如果是安装32位兼容库,则需要xxx-dev:i386

apt-get因为依赖关系安装失败

这种问题一般都是因为更新缓存里边没有相关的依赖版本软件导致的

    1. 检查一下自己有没有修改过系统设置软件和更新里边的更新选项,确保重要安全更新和推荐更新都是选上的。
    1. apt-get update 一下,注意看下有没有因为网络或者其他原因导致更新缓存失败的。
    1. update后再试一下,如果还不行一般就是源有问题,去google找找答案吧。