【问题标题】:cannot find -lX11找不到-lX11
【发布时间】:2012-12-08 19:50:51
【问题描述】:

我正在尝试编译一个程序,但链接失败并显示以下消息:

gcc -O2 -pipe -Wl,--export-dynamic tkAppInit.o -L/home/dimitriv/ns-allinone-2.35/tk8.5.10/unix -ltk8.5 \
-L/home/dimitriv/ns-allinone-2.35/tcl8.5.10/unix -ltcl8.5 -lX11 -ldl -lieee -lm -Wl,-rpath,/home/dimitriv/ns-allinone-2.35/lib -o希望 /usr/bin/ld: 找不到-lX11
collect2: error: ld 返回 1 个退出状态

但是,我的$LD_LIBRARY_PATH 包含已安装 X11 的目录:

回显 $LD_LIBRARY_PATH
/share/apps/cim/lib:/opt/ns2/otcl-1.13:/opt/ns2/lib:/home/dimitriv/local/lib:

并且这些库似乎已正确安装。

ls /home/dimitriv/local/lib | grep X11
libX11.a
libX11.la
libX11.so
libX11.so.6
libX11.so.6.3.0
libX11-xcb.a
libX11-xcb.la
libX11-xcb.so
libX11-xcb.so.1
libX11-xcb.so.1.0.0
X11

为什么无法定位库并进行链接?

【问题讨论】:

标签: c++ c gcc linker x11


【解决方案1】:

正如您在编译命令本身中看到的那样:

gcc -O2 -pipe -Wl,--export-dynamic tkAppInit.o -L/home/dimitriv/ns-allinone-2.35/tk8.5.10/unix -ltk8.5 \ 
-L/home/dimitriv/ns-allinone-2.35/tcl8.5.10/unix -ltcl8.5 -lX11 -ldl -lieee -lm -Wl,-rpath,/home/dimitriv/ns-allinone-2.35/lib -o wish

路径

-L/home/dimitriv/local/lib

未添加。将其添加到您的 make 文件中,然后检查。

【讨论】:

  • 好的,我会检查的。但它不应该检查 LD_LIBRARY_PATH 吗?
  • @user828193 仅在运行时。 LD_LIBRARY_PATH 变量仅由动态链接器在运行程序时使用。
  • 我不知道在哪里更改 Makefile,但我添加了标志,从命令行运行它并且似乎工作。我会报告它是否有任何副作用。
【解决方案2】:

LD_LIBRARY_PATH 包含共享库的路径,加载器(ld 程序)使用这些路径来执行程序。

在编译期间,使用包含目录。在链接期间,需要对象库。最后一种是你缺少的那种。

您可能必须安装一个软件包才能获取 X11 开发库。在 Linux 上,该软件包称为 libX11-devel。要安装,

sudo yum install libX11-devel             # for Redhat, Fedora, etc.

sudo apt-get install libX11-devel         # for Ubuntu, etc.

【讨论】:

  • devel 包需要提供 ld 正在寻找的 libX11.so。 (注意:libX11.so 通常是指向libX11.so.6 的符号链接,而libX11.so.6 又是指向当前版本库libX11.so.6.3.0 的符号链接)。见ldconfig
  • 不幸的是我不能用 yum 安装任何东西,因为我不是 sudoer。我已经从源代码安装了libX11-1.5.0。我只能在一个包中找到 libX11-dev,你能指出我在哪里可以找到它的源吗?还有@ydroneaud,你可以看到libX11.so存在于上面的目录中......也许libX11-dev毕竟不需要?
【解决方案3】:

解决方案: 使用

安装缺少的包
sudo apt-get install gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget

【讨论】:

  • 在您拥有sudo 权限并且可以安装软件包的情况下,此答案是最好的。我想编译包的原因正是缺少权限。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 2021-06-19
  • 1970-01-01
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多