根据 FreeBSD 的说法,从版本 10 开始,他们使用 Clang/LLVM 而不是 gcc。从表面上看,一切都应该像以前一样表现得更好。但我面对这个现实的次数超出了我的意愿。有些代码无法通过这种方式编译。
例如我尝试编译斯普沃姆。第一个原生 FreeBSDmake
实际上是pmake
,这是不可能的。我们的选择也是如此gmake
。但gmake
在代码上发出会产生此错误:
gcc -g -std=c99 -pedantic -Wall -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2 -c -o snapwm.o snapwm.c gmake: gcc: Command not found gmake: *** [snapwm.o] Error 127
因此,问题就变成了如何编译遭受这些挫折的代码。
答案1
有时需要一些补丁。我已经创建了您可以应用并可以使用gmake
.我没有尝试编译,snapwm
我只测试了构建过程。
diff -ur Nextwm-master.orig/Makefile Nextwm-master/Makefile
--- Nextwm-master.orig/Makefile 2014-03-12 19:46:34.000000000 +0100
+++ Nextwm-master/Makefile 2014-04-16 13:07:08.000000000 +0200
@@ -1,12 +1,12 @@
-CFLAGS+= -g -std=c99 -pedantic -Wall -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2
+CFLAGS+= -g -std=c99 -pedantic -Wall -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2 -I/usr/local/include/
LDADD+= -lX11 -lXinerama
-LDFLAGS= -Wl,-O1,--sort-common,--as-needed,-z,relro
+LDFLAGS= -Wl,-O1,--sort-common,--as-needed,-z,relro,-L/usr/local/lib
EXEC=snapwm
PREFIX?= /usr/local
BINDIR?= $(PREFIX)/bin
-CC=gcc
+CC=clang
all: $(EXEC)
diff -ur Nextwm-master.orig/snapwm.c Nextwm-master/snapwm.c
--- Nextwm-master.orig/snapwm.c 2014-03-12 19:46:34.000000000 +0100
+++ Nextwm-master/snapwm.c 2014-04-16 13:03:24.000000000 +0200
@@ -27,6 +27,7 @@
//#include <X11/keysym.h>
/* For a multimedia keyboard */
#include <X11/XF86keysym.h>
+#include <sys/signal.h>
#include <X11/Xproto.h>
#include <X11/Xutil.h>
#include <X11/Xatom.h>