2017-05-12 19 views
0

sqlcipherをサポートするNPM Sqlite3をクロスコンパイルしようとしています。私はLinuxのarmv7ベースのSOC(システムオンチップ)のクロスコンパイルにUbuntu 16.04を使用しています。NPM sqlite3 with sqlcipher support

私はOpenSSLをクロスコンパイルして、armのためにsqlcipherを構築しました。私は正常にコンパイルされたsqlcipherを使って静的ライブラリ(libsqlcipher.a)を生成しました。

今、私はプロジェクトのNodeJS側を取得しようとしています。私はsqlcipherサポート付きのsqliteを必要とし、arm用にコンパイルします。私は今までSOC SDKを使ってビルドしています。

私はノードv4.6.1とnpm v2.15.9を使ってクロスコンパイルしています。私は、SOCと同じバージョンをUbuntuにインストールしていることを確認しました。次のように

Iはクロスコンパイルに使用するコマンドである:

npm install sqlite3 --target_arch=arm --enable-static=yes --build-from-source --sqlite_libname=sqlcipher -fPIC --sqlite=home/onkar/Library/sqlcipher-master/.libs --verbose 

IはLDFLAGSにlibsqlcipher.aの位置を輸出しました。私はクロスコンパイルしようとすると、次のエラーが表示されます。誰かがこのエラーで私を助けることができますか?

/home/linuximage/sdk/sysroots/x86_64-angstromsdk-linux/usr/libexec/arm-angstrom-linux-gnueabi/gcc/arm-angstrom-linux-gnueabi/5.2.1/real-ld: error: /home/Library/sqlcipher-master/.libs/libsqlcipher.a(sqlite3.o): requires unsupported dynamic reloc R_ARM_THM_MOVW_ABS_NC; recompile with -fPIC 
collect2: error: ld returned 1 exit status 
node_sqlite3.target.mk:129: recipe for target 'Release/obj.target/node_sqlite3.node' failed 
make: *** [Release/obj.target/node_sqlite3.node] Error 1 

私は同じを提供するよりも幸せになる、あなたは任意の追加情報が必要な場合は私に知らせてください。 libsqlcipher.aファイルが最初に作成されたときに-fPIC(位置独立コード)フラグが正しく適用された場合

おかげで、最初のインスタンスで Onkar

答えて

0

は、あなたがチェックする必要があります。上記のあなたの出力で

は、それがでファイルを使用しているリンカのようになります。 /home/Library/sqlcipher-master/.libs/libsqlcipher.a

コマンドを実行します

objdump -r /home/Library/sqlcipher-master/.libs/libsqlcipher.a | more 

...そしてあなたは、この行が表示された場合は、ライブラリは位置独立コードが含まれていないテキスト

RELOCATION RECORDS FOR 

で始まる出力の開始に近いラインを確認してください。