1

Mac OS Ver 10.6.8 でネイティブ 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

この問題は、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.6.x および NDK と互換性のないバイナリを生成する Mac OS X 10.7 でビルドしたことが原因でした。

新しい NDK をダウンロードして試してみました。正常に動作します。

于 2013-01-03T08:19:16.273 に答える
0

これは、OS X で R8C を使用しようとしている何人かの人々によって報告されています。たとえば、android-ndk リストのこの投稿を参照してください。

提案された回避策は次のとおりです。

この特定の問題に対する可能な回避策を思い付くことができました。memmem() を実装する新しい共有ライブラリを作成しました。DYLD_INSERT_LIBRARIES を使用して memmem.dylib をプロセスにロードし、DYLD_FORCE_FLAT_NAMESPACE=1 を使用して、ld が libSystem.B.dylib の代わりに memmem.dylib 内で _memmem を見つけられるようにします。他のシンボルに同じ処理が必要かどうかはわかりません。

それ以上の詳細は含まれていないのではないかと思います。

于 2012-12-18T14:09:16.443 に答える