2014-01-22 20 views
2

NetBSD的:編譯CWM

./configure 
make 

這沒有錯誤編譯工作原CWM TGZ組(沒有NetBSD的一個)後,動態LIB錯誤。開始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。

爲什麼裝載機抱怨?

回答

2

顯而易見的部分是`-Wl,-R/usr/X11R7/lib'在鏈接時並未包含在加載器命令行中。

NetBSD的運行時加載程序(/libexec/ld.elf_so)只有編譯的`/ lib:/ usr/lib'運行時庫搜索路徑,所以需要在搜索路徑上需要額外元素的任何可執行文件在編譯時添加它們。 (如/ usr/pkg/lib的條目)。

+0

非常好,謝謝。解決了dwm的問題。 – atomicules