我正在尝试编译程序,并且链接失败并显示以下消息:
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
为什么无法定位库并进行链接?
答案 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