2017-04-05 3 views
1

TFレポのcontrib/makefileで提供されているスクリプトを使用してTensorflowを構築しました。私が端末出力から知る限り、生成されたlibtensorflow-core.a-fPICを有効にしてコンパイルされていたはずです。スタティックライブラリリンクエラー "サポートされていないダイナミックリロケーションが必要"

は今、私はこれがobjdump

$ objdump -r libtensorflow-core.a 

libtensorflow-core.a(test_log.pb.o): file format ELF32-arm-little 

RELOCATION RECORDS FOR [.rel.text]: 
0000075c R_ARM_CALL _ZN6google8protobuf8internal14WireFormatLite24WriteMessageMaybeToArrayEiRKNS0_11MessageLiteEPNS0_2io17CodedOutputStreamE 
000009b8 R_ARM_CALL _ZN6google8protobuf8internal14WireFormatLite10WriteInt64EixPNS0_2io17CodedOutputStreamE 
000009cc R_ARM_CALL _ZN6google8protobuf8internal14WireFormatLite10WriteInt64EixPNS0_2io17CodedOutputStreamE 
00000a1c R_ARM_CALL _ZN6google8protobuf8internal14WireFormatLite16VerifyUtf8StringEPKciNS2_9OperationES4_ 
00000a34 R_ARM_CALL _ZN6google8protobuf8internal14WireFormatLite11WriteStringEiRKSsPNS0_2io17CodedOutputStreamE 
00000a44 R_ARM_REL32 .LC3 
... 
の出力である

libtensorflow-core.a(config.pb.o): requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC 

add_library(lib_tf STATIC IMPORTED) 
set_target_properties(lib_tf PROPERTIES IMPORTED_LOCATION ${TF_BUILD}/libtensorflow-core.a) 

add_library(native-lib SHARED ${SRC}) 
target_link_libraries(native-lib lib_tf) 

それは文句を言うとAndroidのNDKプロジェクトの共有ライブラリにそのライブラリをリンクしようとすると、

それは-fPICでコンパイルされたようです。私は問題が何であるか分かりません。

UPDATE

私は、Android NDKアームツールチェーンを経由して、手動でそれをコンパイルし、それが働きました。 Androidスタジオの違いは分かりません。

答えて

0

私のC++ toolchainは、今日私が試していたときに私に同じエラーを与えました オブジェクトをアンドロイドの共有ライブラリにリンクするには、問題のソースファイル内のextern変数に使用していた名前空間の解決を修正したとき、エラーは になりました。上記

namespace { 
    namespace android { 
     extern int* sys_id ; 
    } 
} 

void home::fileList::report() { 
    // do stuff 
    initialize (android::sys_id) ; 
    // do stuff 
} 

namespace m1 { 
    namespace android { 
     extern int* sys_id ; 
    } 
} 

void home::fileList::report() { 
    // do stuff 
    initialize (m1::android::sys_id) ; 
    // do stuff 
} 
を成功以下、エラー "サポートされていない動的再配置を必要とする" 扇動
関連する問題