您走在正确的轨道上,这些是框架和包含标志,但是如果您使用正确的配置选项,您会发现甚至系统包含也被正确拾取。
Makefile 将尝试根据--with-mac-sysroot
和--with-mac-version-min
属性适当地设置框架。
用于指定 SDK 位置的示例配置选项:
--with-mac-sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/
--with-mac-version-min=10.7
如果您在 Mountain lion (10.8) 上构建,您仍然需要使用 10.7 最低兼容性,因为 PulseAudio 引用的 10.8 SDK 中缺少标头。
您可以将配置选项传递给autogen.sh
将在configure
autoconf 完成后运行的选项。您可以尝试以下已在 master 分支上测试过的命令:
./autogen.sh --prefix=/usr/local --disable-jack --disable-hal --disable-bluez --disable-avahi --with-mac-sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/ --with-mac-version-min=10.7 --disable-dbus
如果遇到 m4 宏错误,请将 m4 宏从 aclocal 复制到 m4 子目录中,然后重试。
还有一些其他问题,但这些问题必将得到解决,可能很快就会过时。在此处添加它,因为它可能会帮助尝试构建它的人。
错误:找不到 Multiprocessing.h:
这已在 10.7 中被弃用,但标头仍包含在 CoreServices 中,并且将构建只需更改文件中的包含指令src/pulsecore/semaphore-osx.c
。
-#include <Multiprocessing.h>
+#include <CoreServices/CoreServices.h>
错误:'lt_ PROGRAM _LTX_preloaded_symbols' 未声明。
这可能是编译的问题src/daemon/dumpmodules.c
,可以通过声明外部宏来解决。
extern const lt_dlsymlist lt_preloaded_symbols[];
错误:gdbm.h:没有这样的文件或目录
由于某种原因,编译器不考虑默认包含目录,您可以将路径添加到src/Makefile
查找并设置变量GDBM_CFLAGS
。
GDBM_CFLAGS=-I/usr/local/include
开心!