为 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 库的主要内容,如果未能解决你的问题,请参考以下文章
使用 Ogg Flac 和 Vorbis 在 Fedora 中构建 libsndfile
为 armv7、armv7s、arm64、i386 和通用构建 ffmpeg iOS 库