2

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

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 /usr/bin/ld:找不到 - lX11
collect2:错误:ld返回1退出状态

但是,my$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

为什么不能找到库并进行链接?

4

3 回答 3

4

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.
于 2012-12-21T08:35:04.497 回答
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 文件中,然后检查。

于 2012-12-21T08:32:24.963 回答
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
于 2018-12-15T18:19:07.437 回答