0

我正在运行带有 musl libc 的 Alpine Linux,试图安装-
https://github.com/patrickhaller/no-wm/
-
make install
我安装了 musl-dev 和 libx11-dev。
libx11-dev 将库放在 /usr/lib 而不是 /usr/X11/lib 中。
请参阅 - https://pkgs.alpinelinux.org/contents?branch=edge&name=libx11-dev&arch=x86&repo=main
所以我将 Makefile 行更改为 -我确认libX11.so
X11LIB = -lX11 -L/usr/lib/
位于该目录位置。

然而我的安装仍然失败,这个输出 -

$ make install
gcc -O2 -Wall -std=c99 -pedantic -lX11 -L/usr/lib/ x-alt-tab-mru.c -o x-alt-tab-mru
/usr/lib/gcc/aarch64-alpine-linux-musl/10.2.0/../../../../aarch64-alpine-linux-musl/bin/ld: /tmp/cckobJdo.o: in function `x_alt_tab':
x-alt-tab-mru.c:(.text+0x70): undefined reference to `XGetWMHints'
/usr/lib/gcc/aarch64-alpine-linux-musl/10.2.0/../../../../aarch64-alpine-linux-musl/bin/ld: x-alt-tab-mru.c:(.text+0x84): undefined reference to `XGetWindowAttributes'
/usr/lib/gcc/aarch64-alpine-linux-musl/10.2.0/../../../../aarch64-alpine-linux-musl/bin/ld: x-alt-tab-mru.c:(.text+0xec): undefined reference to `XLowerWindow'
/usr/lib/gcc/aarch64-alpine-linux-musl/10.2.0/../../../../aarch64-alpine-linux-musl/bin/ld: x-alt-tab-mru.c:(.text+0xf8): undefined reference to `XRaiseWindow'
/usr/lib/gcc/aarch64-alpine-linux-musl/10.2.0/../../../../aarch64-alpine-linux-musl/bin/ld: x-alt-tab-mru.c:(.text+0x10c): undefined reference to `XSetInputFocus'
/usr/lib/gcc/aarch64-alpine-linux-musl/10.2.0/../../../../aarch64-alpine-linux-musl/bin/ld: x-alt-tab-mru.c:(.text+0x11c): undefined reference to `XRestackWindows'
/usr/lib/gcc/aarch64-alpine-linux-musl/10.2.0/../../../../aarch64-alpine-linux-musl/bin/ld: x-alt-tab-mru.c:(.text+0x128): undefined reference to `XSync'
/usr/lib/gcc/aarch64-alpine-linux-musl/10.2.0/../../../../aarch64-alpine-linux-musl/bin/ld: /tmp/cckobJdo.o: in function `main':
x-alt-tab-mru.c:(.text.startup+0x34): undefined reference to `XOpenDisplay'
/usr/lib/gcc/aarch64-alpine-linux-musl/10.2.0/../../../../aarch64-alpine-linux-musl/bin/ld: x-alt-tab-mru.c:(.text.startup+0x44): undefined reference to `XSync'
/usr/lib/gcc/aarch64-alpine-linux-musl/10.2.0/../../../../aarch64-alpine-linux-musl/bin/ld: x-alt-tab-mru.c:(.text.startup+0x70): undefined reference to `XQueryTree'
collect2: error: ld returned 1 exit status
make: *** [Makefile:19: x-alt-tab-mru] Error 1

我已经确认 x-alt-tab-mru.c 文件中的标头位于正确的位置,并且包含在 libx11-dev 中。

接下来我可以做些什么来解决这个问题并让它编译?我已经追了我能想到的一切。。

4

1 回答 1

0

链接命令行上的参数顺序很重要。 -L选项仅适用于搜索稍后在命令行上指定的库,并且至少对于静态链接,正在链接的对象中的一个对象中的未定义符号仅针对稍后在命令行上指定的其他对象进行解析。链接共享库时,行为可能(也可能不会)有所不同,但为了安全起见,您应该始终根据对象的依赖关系对要链接的对象(源文件、对象文件和库)进行排序。

那么,特别是,

  • 万一您-L/usr/lib根本需要,它应该在之前-lX11,并且
  • -lX11选项应出现 x-alt-tab-mru.c链接命令之后。
于 2020-10-08T18:05:15.773 回答