为 ARM 架构构建 libsndfile 库

Posted

技术标签:

【中文标题】为 ARM 架构构建 libsndfile 库【英文标题】:Build libsndfile library for ARM architectures 【发布时间】:2012-10-31 14:50:38 【问题描述】:

我需要构建 libsndfile 以便在 Iphone/Ipad 上的音频引擎中使用它。我已经构建它没有错误,但是对于 i386 架构,所以我在构建我的项目时遇到了一些错误:

Undefined symbols for architecture i386:
  "_FLAC__StreamDecoderErrorStatusString", referenced from:
      _sf_flac_error_callback in libsndfile.a(flac.o)
  "_FLAC__StreamEncoderInitStatusString", referenced from:
      _flac_write_header in libsndfile.a(flac.o)
  "_FLAC__metadata_object_delete", referenced from:
      _flac_close in libsndfile.a(flac.o)
  "_FLAC__metadata_object_new", referenced from:
      _flac_write_header in libsndfile.a(flac.o)
  "_FLAC__metadata_object_vorbiscomment_append_comment", referenced from:
      _flac_write_header in libsndfile.a(flac.o)

如何为 arm 架构构建它?

我找到了 this subject Erik de Castro Lopo 说要这样做的地方:

./configure --prefix=$HOME/Arm --build=i386-linux --host=arm-unknown-linux-gnueabi

但是当我构建时,我得到了这个:

undefined symbols for architecture x86_64:
  "_AudioQueueAddPropertyListener", referenced from:
      _main in sndfile-play.o
  "_AudioQueueAllocateBuffer", referenced from:
      _main in sndfile-play.o
  "_AudioQueueDispose", referenced from:
      _main in sndfile-play.o
  "_AudioQueueEnqueueBuffer", referenced from:
      _main in sndfile-play.o
      _macosx_audio_out_callback in sndfile-play.o
  "_AudioQueueFreeBuffer", referenced from:
      _main in sndfile-play.o

我该怎么办?谢谢!

【问题讨论】:

该配置行是正确的,假设您的 PATH 上有一个 arm-unknown-linux-gnueabi 工具链。如果它不起作用,那么这可能是 libsndfile 的 autotools 配置中的错误。我认为这里没有人可以帮助您,您应该向作者报告。 【参考方案1】:

您看到的第一块错误 (i386/FLAC) 似乎是因为配置进程检测到 FLAC 头文件,但找不到 FLAC 库。

第二个错误,你说的交叉编译有与 x86_64 相关的错误。你真的安装了arm交叉编译器吗?

以下命令的输出是什么(运行./configure后在libsndfile源目录下运行):

$ grep _os config.log
$ grep _CC config.log

【讨论】:

感谢您的回复,我自己搜索了很多,终于找到了这个github:github.com/sbooth/AudioFrameworks我已经尝试过他的xcode项目,现在一切正常!非常感谢您的时间和您的图书馆 :)

以上是关于为 ARM 架构构建 libsndfile 库的主要内容,如果未能解决你的问题,请参考以下文章

如何更新您的静态库架构以支持 arm64 构建?

使用 Ogg Flac 和 Vorbis 在 Fedora 中构建 libsndfile

为 armv7、armv7s、arm64、i386 和通用构建 ffmpeg iOS 库

如何构建和使用PJSIP用于不同于armeabi的架构?

为 iOS 模拟器构建,但在为 iOS 构建的目标文件中链接,用于架构 arm64

为不同的架构重建静态库