/usr/bin/ld: cannot find -lXXXX

问题描述:

/usr/bin/ld: cannot find -lxkbcommon
          /usr/bin/ld: cannot find -lxkbcommon
          /usr/bin/ld: cannot find -linput
          /usr/bin/ld: cannot find -lgbm
          collect2: error: ld returned 1 exit status

问题原因:

此问题表示链接器(ld)想要查找的库(library)没有找到。

/usr/bin/ld: cannot find -linput 之类的消息实际它正在寻找一个名为 libinput.so 的文件。 -l 标志是一个命令行参数(对于 ld 或 gcc),期望库名称跟随,然后库名称用于形成包含 lib 前缀和 .so 后缀的文件名(用于动态加载库,这是大多数发行版中通常使用的库,包括 Fedora。
所以需要的文件是 libinput.so 和 libgbm.so。

解决方案:

然后,可以使用 dnf 提供来搜索这些文件。假设您使用的是 64 位发行版,这些库将位于 /usr/lib64 中,因此完整的命令将是:
$ dnf provides /usr/lib64/libinput.so
libinput-devel-1.12.6-3.fc30.x86_64 : Development files for libinput
Repo        : rawhide
Matched from:
Filename    : /usr/lib64/libinput.so

$ dnf provides /usr/lib64/libgbm.so
mesa-libgbm-devel-19.0.0~rc7-1.fc30.x86_64 : Mesa libgbm development package
Repo        : rawhide
Matched from:
Filename    : /usr/lib64/libgbm.so
如果不知道确切的目录,也可以使用
 dnf provides '*/libinput.so' 
或其他通配符。

现在需要安装的是:
$ sudo dnf install libinput-devel mesa-libgbm-devel
从那时起, dnf 还应该带来您需要的所有其他依赖项。希望这是您构建您正在构建的软件所缺少的一切。但是,如果您还有更多缺少库的问题,使用此信息您可能能够找到提供这些库的软件包,假设它们在 Fedora 中可以使用。

最后一种方式:去Libhs.so.5()(64bit) Download (RPM)pkgs.org网站或者kernel | Package Info | kojikoji中,寻找需要下载的库文件,通过rpm的方式,下载需要的库文件。

你可能感兴趣的:(linux,运维,服务器)