3

在 Mac OS X 10.7.3 (Lion) 上构建 android 源代码时出现以下错误:

host SharedLib: libSR_Recognizer (out/host/darwin-x86/obj/lib/libSR_Recognizer.dylib)
Undefined symbols for architecture i386:
  "_pushAudioIntoRecognizer", referenced from:
      _SR_RecognizerAdvanceImpl in RecognizerImpl.o
      _detectBeginningOfSpeech in RecognizerImpl.o
  "_generatePatternFromFrame", referenced from:
      _SR_RecognizerAdvanceImpl in RecognizerImpl.o
  "_canPushAudioIntoRecognizer", referenced from:
      _SR_RecognizerAdvanceImpl in RecognizerImpl.o
      _detectBeginningOfSpeech in RecognizerImpl.o
  "_generatePatternFromFrameEOI", referenced from:
      _SR_RecognizerAdvanceImpl in RecognizerImpl.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [out/host/darwin-x86/obj/lib/libSR_Recognizer.dylib] Error 1

有什么线索吗?

4

6 回答 6

3

解决此错误的最佳方法是执行以下操作:

  1. 安装 gcc-4.2 和 g++-4.2:brew install https://raw.github.com/Homebrew/homebrew-dupes/master/apple-gcc42.rb
  2. 设置CCCXX环境变量:export CC=/usr/local/bin/gcc-4.2 && export CXX=/usr/local/bin/g++-4.2
  3. 然后构建:make

如果您需要为#1 安装自制软件,请访问:自制软件主页

于 2012-10-10T04:51:40.287 回答
3

我以这种方式修复,我的编译器对此很满意。

vi ./external/srec/srec/Recognizer/src/RecognizerImpl.c

全部替换PINLINE/*** PINLINE ***/ - 实际上删除所有这些

于 2012-11-27T12:35:09.317 回答
1

我终于找到了答案:)

使用以下选项运行 make

make CC=gcc CXX=g++ -j4

一切都会顺利

于 2012-04-20T13:33:35.667 回答
1

唯一正确的解决方案是安装 XCode 3.*

于 2012-06-02T11:32:57.107 回答
0

这是来自 Android 主 stram 的修复 - external/srec/portable/include/PortExport.h

  #if defined(__APPLE_CC__)
  #if __APPLE_CC__ >= 5621
  #undef PINLINE
  #define PINLINE
  #endif
  #endif
于 2013-01-15T14:27:20.637 回答
0

不幸的是,这是 AOSP 中的一个已知问题(请访问http://source.android.com/source/known-issues.html)。安装 brew 包。

您应该使用创建自定义构建

lunch full-eng

代替

lunch full-userdebug

我在 Android-4.1.2_r1 上没有发现问题

于 2013-01-30T11:51:02.507 回答