c++ - 找不到-lX11

标签 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 wish /usr/bin/ld: cannot find -lX11
collect2: error: ld returned 1 exit status

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

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

最佳答案

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.

关于c++ - 找不到-lX11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13986636/

相关文章:

c++ - 使用结构中的变量定义数组大小

c++ - 将 CString 写入 .bin 文件

python - cx_Freeze 构建错误

Char * 共享同一内存

c++ - 制作某种菜单时出现问题

c++ - 将静态局部变量初始化为编译期间未知的值

c - 在 Linux 上用 C 语言读写串口

c - eclipse-cdt 链接器找不到 crt0.o

c - 当我们可以简单地做到这一点时,为什么要在创建链表时创建堆呢?

c++ - 为什么 gcc 认为我试图在我的模板函数签名中进行函数调用?