1

在 Mac OS Ver 10.6.8 上编译我的 Native C 文件时 - 我收到以下错误

VibhasChandra:com.htp.DrivingRange vibhasc$ /Users/vibhasc/Desktop/myeclipse/android-ndk-r8c/ndk-build 
SharedLibrary  : libndk1.so
dyld: lazy symbol binding failed: Symbol not found: _memmem**

Referenced from: /Users/vibhasc/Desktop/myeclipse/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld
Expected in: /usr/lib/libSystem.B.dylib
dyld: Symbol not found: _memmem**

Referenced from: /Users/vibhasc/Desktop/myeclipse/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld
Expected in: /usr/lib/libSystem.B.dylib

clang: error: unable to execute command: Trace/BPT trap
clang: error: linker command failed due to signal (use -v to see invocation)
make: *** ****[obj/local/armeabi/libndk1.so] Error 254

我知道这在 linux 机器上很容易工作,但在 Mac 上它会给出错误......如何解决这个问题..?? 如何在中创建 dyLib 文件

4

2 回答 2

0

一些尝试在 OS X 上使用 R8C 的人已经报告了这一点。例如,参见android-ndk 列表上的这篇文章。

建议的解决方法如下:

我能够为这个特定问题想出一个可能的解决方法。我创建了一个实现 memmem() 的新共享库。我使用 DYLD_INSERT_LIBRARIES 让 memmem.dylib 加载到进程中,并使用 DYLD_FORCE_FLAT_NAMESPACE=1 让 ld 在 memmem.dylib 中找到 _memmem 而不是它想要查找的 libSystem.B.dylib。我不确定是否有任何其他符号需要相同的处理。

恐怕它不包含比这更多的细节。

于 2012-12-18T14:09:16.443 回答
0

此问题已在较新版本的 Android NDK 修订版 8d(2012 年 12 月)中修复,即 android-ndk-r8d 版本。

供您参考:http: //developer.android.com/tools/sdk/ndk/index.html#Revisions

修复信息在这里:

修复了用于 Mac OS X 10.6.x 的 NDK 8c 版本的链接器故障,该故障会产生以下错误:

dyld:惰性符号绑定失败:找不到符号:_memmem 引用自:...../arm-linux-androideabi/bin/ld 预期在:/usr/lib/libSystem.B.dylib

此问题是由在 Mac OS X 10.7 上构建引起的,它生成的二进制文件与 Mac OS 10.6.x 和 NDK 不兼容。

已下载并尝试使用较新的 NDK。工作正常。

于 2013-01-03T08:19:16.273 回答