找不到-lX11

时间:2012-12-21 08:27:37

标签: c++ c gcc linker x11

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

  

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:错误:ld返回1退出状态

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

  

echo $ 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

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

3 个答案:

答案 0 :(得分:3)

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

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

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

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

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

答案 1 :(得分: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文件中添加,然后检查。

答案 2 :(得分:1)

解决方案: 使用

安装缺少的软件包
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