2012-08-11 217 views
2

我試圖在Mac OS X上編譯pulseaudio,但是默認情況下,我收到很多關於找不到像inttypes.h,errno.hstdio.h這樣的標準文件的錯誤。將-isystem/usr/include置於CPPFLAGS可修復這些錯誤,但後來我得到fatal error: 'CoreServices/CoreServices.h' file not found用CoreServices.h在Mac OS X上編譯pulseaudio

我試過也加了-framework CoreServices和/或 -I/System/Library/Frameworks/CoreServices.framework/Headers但都沒有工作。

讓編譯器找到它的正確方法是什麼? 我想我使用的是clang,gcc會產生更多的錯誤。

+0

嘿亞當,你有沒有在osx上使用pulseaudio並運行? – 2012-08-19 17:34:53

回答

1

您處於正確的軌道上,那些是框架幷包含標誌,但是如果您使用正確的配置選項,您甚至會發現系統包括正確拾取。

Makefiles將嘗試基於--with-mac-sysroot--with-mac-version-min屬性適當地設置框架。

示例配置選項來指定SDK位置:如果您在山獅(10.8)建設

--with-mac-sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/ 
--with-mac-version-min=10.7 

你仍然需要爲有頭的10.8 SDK缺少其中的PulseAudio使用10.7最小的兼容性參考。

您可以將配置選項傳遞給autogen.sh,一旦autoconf完成,它將運行configure。如果你得到m4宏錯誤從aclocal會複製m4宏進M4子目錄,然後再試一次

./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 

:你可以試試下面的命令已在主分支進行測試。

還有其他一些問題,但這些問題很快就會被清除。在這裏添加它可能會幫助有人試圖建立它。

錯誤: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:沒有這樣的文件或目錄 出於某種原因,默認include目錄不被編譯器考慮,你可以將路徑添加到src/Makefile外觀並設置變量GDBM_CFLAGS

GDBM_CFLAGS=-I/usr/local/include 

nJoy!

+0

+1爲「其他幾個問題」。這節省了我的一天。 – fbmd 2014-01-16 14:23:02

+0

你讓我的日子=)Tx! – 2014-01-31 01:06:45