在 64 位上编译 32 位应用程序,找不到 -lX11

在 64 位上编译 32 位应用程序,找不到 -lX11

我正在调用如下命令:

g++ ... -o"myapp" -lX11 ...

并且得到

/usr/bin/ld: cannot find -lX11

我已经安装了以下软件包来支持多架构:

ia32-libs, libc6-dev-i386 and g++-multilib

但无济于事。/usr/lib32 中似乎没有任何 X11.so,实际上该目录中只有 52 个库。我的印象是您应该手动安装库,但我不知道下一步应该检查什么。

任何帮助均感激不尽。

答案1

您需要头文件,这些头文件由软件包提供-dev,而不是库软件包本身。因此,请尝试安装libx11-dev。这应该可以修复此特定构建错误,尽管您可能会收到有关其他库的类似错误(然后您可以安装它们的-dev软件包)。

尽管这些软件包提供的是头文件而不是二进制文件,并且通常头文件通过使用预处理器宏来解释所有支持的体系结构,但-devUbuntu 中的软件包往往是特定于体系结构的,这就是这种情况libx11-dev(如上所示这里通过展开版本并找到该版本中.deb列出的软件包libx11-dev)。由于您的 Ubuntu 系统是 64 位的,而您正在编译一个必须链接到 32 位版本的库的 32 位程序,因此您可能需要安装 32 位版本的libx11-dev。如果您使用apt-get或进行安装,您可以通过指示要安装的软件包来aptitude指定它(因为libx11-dev:i386多主得到支持并正在使用)。

http://packages.ubuntu.com/是查找-dev与库包对应的包名称的一个很好的资源。库包名称后面并不总是紧跟-dev;有时库包名称中存在的版本号(尤其是在 之后-)是缺席的在相应包的名称中-dev

相关内容