4

我仍然无法在我的系统上构建 Portaudio 库,这是带有 Xcode 4.3.2 的 OSX 10.7.5,安装了命令行工具并在下安装了 SDK10.6 和 SDK10.7

    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/

我简要描述了(也适用于遇到相同问题的其他人)到目前为止我所做的事情(遵循我在网上找到的不同解决方案)。

1)我从以下位置下载了“Portaudio”/pa_stable_v19_20111121.tgz(最后一个稳定版本):

www.portaudio.com/download.html

2)我在这里阅读了关于构建 Portaudio 的说明:

www.portaudio.com/docs/v19-doxydocs/compile_mac_coreaudio.html

并尝试使用建议的命令从终端窗口编译:

./配置 && 制作

这导致(并不奇怪)很多错误以以下结尾:

llvm-gcc-4.2:错误尝试执行'/usr/bin/../llvm-gcc-4.2/bin/powerpc-apple-darwin11-llvm-gcc-4.2':execvp:没有这样的文件或目录lipo:可以't open input file: /var/folders/1_/xkp08ky561jg02zjjrpsxg940000gn/T//ccPxCTrJ.out (没有这样的文件或目录) make: * [src/hostapi/coreaudio/pa_mac_core.lo] 错误1

发生这种情况是因为自 OSX 10.5 起不再支持“ppc”。此外,OSX 10.7 上不存在“Developer”文件夹,并且 Developer 文件夹中的所有内容都已移至

   /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/

3)我下载了一个补丁(mac_configure_patch.txt)来修复“配置”:

https://www.assembla.com/spaces/portaudio/tickets/216#/activity/ticket

并将其复制到 portaudio 目录并通过键入终端应用它:

$补丁<mac_configure_patch.txt

一条确认消息说:

修补文件configure.in

所以一切似乎都很好。但 Portaudio 仍在尝试为“ppc”构建。

4) 现在我将 ARCHFLAGS、CFLAGS、LDFLAGS 设置为仅为 i386 架构构建,如下所示(禁用通用构建):

$ MACOSX_DEPLOYMENT_TARGET="10.7" ARCHFLAGS="-arch i386" CFLAGS="-O2 -g -Wall -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk -arch i386 -mmacosx-version-min=10.7" LDFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sd -arch i386 -mmacosx-version -min=10.7" ./configure --disable-mac-universal

5)此外,我发现:

A):“.include/pa_mac_core.h”中的“#include AudioToolbox.h”应取消注释

B):应该删除“Makefile”(不是 Makefile.in)中的“-wError”。

根据: http ://www.fluxforge.com/blog/building-portaudio-under-os-x-107-lion

6)现在我尝试构建(使用:“sudo make”),编译开始但失败:

ld:找不到框架CoreAudio

collect2: ld 返回 1 个退出状态

制作:* [lib/libportaudio.la] 错误 1

7) 所以我尝试使用“-F/System/Library/Frameworks -framework CoreAudio”来指向框架

导致以下终端命令:

$ MACOSX_DEPLOYMENT_TARGET="10.7" ARCHFLAGS="-arch i386" CFLAGS="-O2 -g -Wall -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk -arch i386 -mmacosx-version-min=10.7" LDFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sd -arch i386 -mmacosx-version -min=10.7 -F/System/Library/Frameworks -framework CoreAudio" ./configure --disable-mac-universal

这似乎解决了 CoreAudio 框架问题,但导致另一个错误说:

ld: 找不到 -lSystem 的库

collect2: ld 返回 1 个退出状态

制作:* [lib/libportaudio.la] 错误 1

我现在被困在这一点上。尝试使用 SDK10.6 或 SDK10.7 在 OSX 10.7 上构建 Portaudio 时,是否有人遇到过同样的问题。有没有人找到如何从终端构建 Portaudio 的解决方案?我非常感谢任何提示!!!提前致谢!

4

3 回答 3

6

试试最新的svn。如果这不能立即奏效,您可能需要使用一些标志。

例如,在 configure.in 中:

  • 将 -Werror 更改为 -Wall
  • 添加 -Wno-deprecated (你不应该需要这个,但以防万一)

然后运行

./configure --disable-mac-universal

和往常一样。

于 2012-11-09T17:08:28.187 回答
1

好的,最后我解决了这个问题。希望解决方案也能帮助其他人。我只是忘了将 CoreAudio 框架的路径添加到 CFLAGS 中。这是在 OSX 10.7.5 上使用 SDK10.7 为架构 i386 和 x86_64 构建 portaudio 的最终配置/构建命令:

在 portaudio 目录中打开一个终端窗口并输入:

MACOSX_DEPLOYMENT_TARGET="10.7" ARCHFLAGS="-arch i386" CFLAGS="-O2 -g -Wall -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk - arch i386 -mmacosx-version-min=10.7 -F/System/Library/Frameworks -framework CoreAudio" LDFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10. 7.sdk -arch i386 -mmacosx-version-min=10.7 -F/System/Library/Frameworks -framework CoreAudio" ./configure --disable-mac-universal

如果这已经完成,您需要编辑Makefile并将提及更改-Werror-Wall

然后:

制作

瞧。在 portaudio/lib 目录中有你的“libportaudio.la”。您现在可以输入

须藤使安装

(系统会要求您使用密码进行确认)

将库放在系统目录中。

最后你可以玩弄 Portaudio 了!玩得开心!

于 2012-11-10T10:51:13.077 回答
0

在 Mac OSX Mountain Lion (10.8) 上尝试了您的说明,它在编译方面取得了很大进展,但随后失败:

In file included from ./test/patest_sine_channelmaps.c:53:
./include/pa_mac_core.h:100:1: error: unknown type name 'AudioDeviceID'
AudioDeviceID PaMacCore_GetStreamInputDevice( PaStream* s );
^
./include/pa_mac_core.h:109:1: error: unknown type name 'AudioDeviceID'
AudioDeviceID PaMacCore_GetStreamOutputDevice( PaStream* s );
^
2 errors generated.
make: *** [bin/patest_sine_channelmaps] Error 1

但是,我发现您可以简单地使用Homebrew(类似 apt 的 OSX 数据包管理器),它会像魅力一样完成肮脏的工作。在指定的安装目录中查找二进制文件和头文件:)

$ brew install portaudio
Warning: It appears you have MacPorts or Fink installed.
Software installed with other package managers causes known problems for
Homebrew. If a formula fails to build, uninstall MacPorts/Fink and try again.
==> Downloading http://www.portaudio.com/archives/pa_stable_v19_20111121.tgz
######################################################################## 100.0%
==> Downloading patches
######################################################################## 100.0%
==> Patching
patching file include/pa_mac_core.h
==> ./configure --prefix=/usr/local/Cellar/portaudio/19.20111121 --enable-mac-un
==> make install
/usr/local/Cellar/portaudio/19.20111121: 8 files, 316K, built in 20 seconds
于 2013-12-22T00:59:42.440 回答