我用
编译了原始的cwm tgz包(不是netbsd包)./configure
make
无误地工作。用
启动cwm后./cwm
错误
Shared object "libX11.so.7" not found
出现。 ldd输出是:
-lXft.2 => /usr/pkg/lib/libXft.so.2
-lfontconfig.1 => /usr/pkg/lib/libfontconfig.so.1
-lfreetype.7 => /usr/X11R7/lib/libfreetype.so.7
-lz.1 => /usr/lib/libz.so.1
-lgcc_s.1 => /usr/lib/libgcc_s.so.1
-lc.12 => /usr/lib/libc.so.12
-lbz2.1 => /usr/lib/libbz2.so.1
-lexpat.2 => /usr/lib/libexpat.so.2
-lXrender.2 => /usr/X11R7/lib/libXrender.so.2
-lXext.7 => /usr/X11R7/lib/libXext.so.7
-lX11.7 => /usr/X11R7/lib/libX11.so.7
-lxcb.1 => /usr/X11R7/lib/libxcb.so.1
-lXau.7 => /usr/X11R7/lib/libXau.so.7
-lXdmcp.7 => /usr/X11R7/lib/libXdmcp.so.7
-lX11.7 => not found
-lXext.7 => not found
其中“not founds”直接引用cwm二进制文件。它已与命令
链接gcc -Wall -Icompat -D_REENTRANT -I/usr/pkg/include\
-I/usr/X11R7/include/freetype2 -I/usr/X11R7/include\
-I/usr/X11R7/include/freetype2 -I/usr/X11R7/include -g -O2\
-I/usr/X11R7/include -o cwm calmwm.o draw.o screen.o xmalloc.o\
client.o grab.o search.o util.o xutil.o conf.o input.o xevents.o\
group.o geographic.o kbfunc.o cursor.o font.o -L/usr/pkg/lib\
-Wl,-R/usr/pkg/lib -lXft -L/usr/X11R7/lib -lX11 -lXext
所以链接器应该找到libX11和libXext。
为什么装载机抱怨?
答案 0 :(得分:2)
显而易见的部分是链接时加载器命令行中没有包含``-Wl,-R / usr / X11R7 / lib''。
NetBSD的运行时加载器(/libexec/ld.elf_so)只编译了``/ lib:/ usr / lib'的运行时库搜索路径,因此搜索路径上需要其他元素的任何可执行文件都需要显式添加他们在编译时。 (比如/ usr / pkg / lib的条目。)