0

NDK ビルドを使用していますが、この奇妙なリンカー エラーが表示されます。

./external/stlport/stlport/stl/_fstream.c:139: error: undefined reference to 'std::_Filebuf_base::_M_seek(long long, int)'
./external/stlport/stlport/stl/_fstream.c:391: error: undefined reference to 'std::_Filebuf_base::_M_seek(long long, int)'
./external/stlport/stlport/stl/_fstream.c:120: error: undefined reference to 'std::_Filebuf_base::_M_unmap(void*, long long)'
./external/stlport/stlport/stl/_fstream.c:320: error: undefined reference to 'std::_Filebuf_base::_M_seek(long long, int)'
./external/stlport/stlport/stl/_fstream.c:336: error: undefined reference to 'std::_Filebuf_base::_M_seek(long long, int)'
./external/stlport/stlport/stl/_fstream.c:120: error: undefined reference to 'std::_Filebuf_base::_M_unmap(void*, long long)'
./external/stlport/stlport/stl/_fstream.c:120: error: undefined reference to 'std::_Filebuf_base::_M_unmap(void*, long long)'
./external/stlport/stlport/stl/_fstream.c:120: error: undefined reference to 'std::_Filebuf_base::_M_unmap(void*, long long)'
collect2: error: ld returned 1 exit status

fstream.o の objdump 出力を取得しました。この _M_seek() 関数が表示されます。それでも見つからない理由を考えてください。ここに私の Android.mk のいくつかのエントリがあります:

LOCAL_C_INCLUDES +=     $(TOP)/external/stlport/stlport \
                        $(TOP)/bionic/libstdc++/include \
                        $(TOP)/bionic \

LOCAL_CFLAGS += -std=gnu++11 -std=c++11

LOCAL_CPPFLAGS := -std=gnu++11 -std=c++11

LOCAL_SHARED_LIBRARIES := libcutils liblog libutils libstlport

何か不足していますか?

4

1 に答える 1

0

Android.mk ファイルで _LARGEFILE_SOURCE を定義したかどうかを確認します。定義されている場合は、削除すると問題を解決できます。

于 2016-07-24T15:33:00.847 に答える