我正在调用如下命令:
g++ ... -o"myapp" -lX11 ...
Run Code Online (Sandbox Code Playgroud)
并得到
/usr/bin/ld: cannot find -lX11
Run Code Online (Sandbox Code Playgroud)
我已经安装了以下软件包来支持 multiarch:
ia32-libs, libc6-dev-i386 and g++-multilib
Run Code Online (Sandbox Code Playgroud)
但无济于事。/usr/lib32 中似乎没有任何 X11.so,实际上该目录中只有 52 个库。我的印象是您应该手动安装库,但我不知道接下来应该检查什么。
任何帮助表示赞赏。
您需要由-dev
包提供的头文件,而不是在库包本身中。所以,尝试安装libx11-dev
. 这应该可以修复这个特定的构建错误,尽管您可能会遇到关于其他库的类似错误(然后您可以安装它们的-dev
包。)
尽管这些包提供头文件而不是二进制文件,并且通常头文件通过使用预处理器宏来说明所有受支持的体系结构,但-dev
Ubuntu 中的包往往是特定于体系结构的,这是这种情况libx11-dev
(如可以看到的在这里通过扩展一个版本并找到该版本中.deb
列出的包libx11-dev
)。由于您的 Ubuntu 系统是 64 位,并且您正在编译一个必须链接到 32 位版本库的 32 位程序,您可能需要安装 32 位版本的libx11-dev
. 如果您使用apt-get
或安装aptitude
,则可以通过指示libx11-dev:i386
要安装的包来指定它(因为multarch 支持并正在使用)。
http://packages.ubuntu.com/是查找与-dev
库包对应的包名称的好资源。库包的名称并不总是紧随其后-dev
;有时出现在库包名称中的版本号,尤其是在 a 之后-
,在相应包的名称中不存在-dev
。
归档时间: |
|
查看次数: |
10819 次 |
最近记录: |