![尝试使用 -lcurses 构建 32 位二进制文件时,安装 multilib 仍然无法解析 -ltinfo](https://linux22.com/image/1172418/%E5%B0%9D%E8%AF%95%E4%BD%BF%E7%94%A8%20-lcurses%20%E6%9E%84%E5%BB%BA%2032%20%E4%BD%8D%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E2%80%8B%E2%80%8B%E4%BB%B6%E6%97%B6%EF%BC%8C%E5%AE%89%E8%A3%85%20multilib%20%E4%BB%8D%E7%84%B6%E6%97%A0%E6%B3%95%E8%A7%A3%E6%9E%90%20-ltinfo.png)
尝试在 kubuntu 18.04 上构建 32 位应用程序。我已经可以使用 -m32 在 32 位模式下编译我的代码,并且能够构建一个简单的应用程序(一旦我安装了多库)。但现在我正尝试构建一个使用 -lcurses 的应用程序,而 ld 抱怨 -ltinfo 的 X86-64 版本不兼容(我假设它是“terminfo”库 - 并通过调用 curses 库来调用)。具体来说:
/usr/bin/ld: skipping incompatible //usr/lib/x86_64-linux-gnu/libtinfo.so when searching for -ltinfo
我的最终构建行上有 cc -m32,并且它没有抱怨任何其他库。
不管怎样,如果我使用系统默认设置并允许我的应用程序以 64 位二进制文件的形式构建,那么一切都会构建 - 所以我假设我请求了所有正确的库等等。只是应用程序没有工作正确作为 64 位应用程序,在我进一步弄清楚为什么那是,我想尝试将其构建为一个 32 位应用程序 - 20 年前,当我为该应用程序进行第一个“概念验证” Linux 构建时,这种方法就奏效了 ;-)
还有其他方法可以调用“ld”命令来加载正确的 32 位库吗?还是我必须再安装一个 32 位库包才能让 -lcurses 在 32 位模式下工作?