我正在尝试编译msg2pdf,这是一个将mu4e(mu为Emacs)中的消息转换为pdf的工具。 我收到以下错误:
/Applications/Xcode.app/Contents/Developer/usr/bin/make all-recursive
Making all in .
CC msg2pdf.o
In file included from msg2pdf.c:20:
In file included from ../../lib/mu-msg.h:24:
../../lib/mu-flags.h:24:10: fatal error: 'glib.h' file not found
#include <glib.h>
^
1 error generated.
make[2]: *** [msg2pdf.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
奇怪的是,我检查了Makefile,GLIB_CFLAGS似乎指向正确的文件夹(brew安装它的地方)。
实际上,glib.h
位于/usr/local/Cellar/glib/2.40.0_1/include/glib-2.0
。
GLIB_CFLAGS = -D_REENTRANT -I/usr/local/Cellar/glib/2.40.0_1/include/glib-2.0 -I/usr/local/Cellar/glib/2.40.0_1/lib/glib-2.0/include -I/usr/local/opt/gettext/include
GLIB_LIBS = -L/usr/local/Cellar/glib/2.40.0_1/lib -L/usr/local/opt/gettext/lib -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl
如何成功编译文件?有没有命令行&#34; hack&#34;我可以在打电话时使用 使?
修改 以下是目录中的文件 https://github.com/flexdec/temp
编辑2 这是使用make V = 1
时的输出/Applications/Xcode.app/Contents/Developer/usr/bin/make all-recursive
Making all in .
gcc -DHAVE_CONFIG_H -I. -I../.. -I../../lib -DICONDIR='""' -Wall -Wextra -Wno-unused-parameter -Wdeclaration-after-statement -g -O2 -MT msg2pdf.o -MD -MP -MF .deps/msg2pdf.Tpo -c -o msg2pdf.o msg2pdf.c
In file included from msg2pdf.c:20:
In file included from ../../lib/mu-msg.h:24:
../../lib/mu-flags.h:24:10: fatal error: 'glib.h' file not found
#include <glib.h>
^
1 error generated.
make[2]: *** [msg2pdf.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
编辑3
我现在使用make V=1
获得的新错误GLIB_CFLAGS问题是固定的
/Applications/Xcode.app/Contents/Developer/usr/bin/make all-recursive
Making all in .
gcc -DHAVE_CONFIG_H -I. -I../.. -I../../lib -D_REENTRANT -I/usr/local/Cellar/glib/2.40.0_1/include/glib-2.0 -I/usr/local/Cellar/glib/2.40.0_1/lib/glib-2.0/include -I/usr/local/opt/gettext/include -DICONDIR='""' -Wall -Wextra -Wno-unused-parameter -Wdeclaration-after-statement -g -O2 -MT msg2pdf.o -MD -MP -MF .deps/msg2pdf.Tpo -c -o msg2pdf.o msg2pdf.c
msg2pdf.c:24:10: fatal error: 'gtk/gtk.h' file not found
#include <gtk/gtk.h>
^
1 error generated.
make[2]: *** [msg2pdf.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
答案 0 :(得分:1)
make V=1
而不是make
将告诉您C编译器命令的样子(而不仅仅是&#34; CC msg2pdf.o&#34;) - 检查并确保它包括你需要的旗帜。
根据您对Makefile.am的快速了解,您在AM_CPPFLAGS中包含$(GTK_CFLAGS)和$(WEBKIT_CFLAGS),但不包括$(GLIB_CFLAGS)。
答案 1 :(得分:0)
您需要在要编译它的机器上的mu的顶级目录中运行./configure。 configure将告诉您任何缺少的依赖项。如果不存在依赖项,则跳过可选组件(例如msg2pdf)。
然后,在配置成功后,执行&#39; make&#39;。
在任何情况下,如果configure已成功运行,则顶级&#39; make&#39;也应该成功(这就是我们配置的原因!),否则请提交错误。