在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文件答案 0 :(得分:0)
建议的解决方法如下:
我能够针对这个特定问题想出一个可能的解决方法。我创建了一个实现memmem()的新共享库。我使用DYLD_INSERT_LIBRARIES将memmem.dylib加载到进程中,并使用DYLD_FORCE_FLAT_NAMESPACE = 1让ld在memmem.dylib中找到_memmem而不是libSystem.B.dylib,它要查找它。我不确定是否有任何其他符号需要相同的处理。
我担心它不包含任何细节。
答案 1 :(得分: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。工作正常。