クロスコンパイルNodejsのピットについて
1720 ワード
前言
クロスコンパイルNodejsは他のプラットフォームに行く時、2つのピットに出会いました.ネット上ではめったに言及されません.全体の夜を使って解決しました.ここに記録します.私のコンパイル目標環境は龍芯3 Aです.
スクリプトをコンパイル
nodejsをコンパイルする過程で、sslというライブラリをコンパイルします.sslにはコンパイルパラメータ「-m 64」があります.このパラメータは部分的にクロスコンパイルして環境が過ぎないようになります.具体的には、このようなものを提示します.unrecognized command line option'-m 64'がありますが、このライブラリは削除できます.configureの時にパラメータを追加できます.withousslを削除してください.
質問2:toquebasevisitor.oフォーマットが不正です.
nodejsはコンパイル中に補助ツールを生成してコンパイルを助けます.これらの補助ツールはホストプラットフォーム(コードをコンパイルするマシンのプラットフォーム)であり、ターゲットプラットフォーム(コンパイル結果を実行するためのプラットフォーム)ではなく、クロスコンパイラはコンパイラをターゲットプラットフォームコンパイラに設定しました.途中ツールが正常に生成できなくなりました.この時、ホームバージョンのツールチェーンを設定して解決します.私のコンパイルスクリプトのNative complers部分を詳しく調べてください.
クロスコンパイルNodejsは他のプラットフォームに行く時、2つのピットに出会いました.ネット上ではめったに言及されません.全体の夜を使って解決しました.ここに記録します.私のコンパイル目標環境は龍芯3 Aです.
スクリプトをコンパイル
cd
export PREFIX=/usr/local/mips-loongson-linux-gnu/bin/mips-linux-gnu-
export CC=${PREFIX}"gcc -march=gs464e -mips64r2 -mabi=64"
export CXX=${PREFIX}"c++ -march=gs464e -mips64r2 -mabi=64"
export LINK=$CXX
export LD=${PREFIX}ld
export AR=${PREFIX}ar
export AS=${PREFIX}as
export RANLIB=${PREFIX}ranlib
export CROSS_COMPILE=mips-loongson
export ARCH=mips64el
# Native compilers
export AR_host="ar"
export CC_host="gcc"
export CXX_host="g++"
export LINK_host="g++"
export AR_HOST="ar"
export CC_HOST="gcc"
export CXX_HOST="g++"
export LINK_HOST="g++"
# extras for convenience.
export OBJD=${PREFIX}objdump
export GDB=${PREFIX}gdb
export RDE=${PREFIX}readelf
./configure --prefix=/home/loongson/node --dest-cpu=mips64el --cross-compiling --without-snapshot --with-mips-arch-variant=r2 --without-ssl --dest-os=linux
make -j$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1)
問題1:unrecognized command line option'-m 64'nodejsをコンパイルする過程で、sslというライブラリをコンパイルします.sslにはコンパイルパラメータ「-m 64」があります.このパラメータは部分的にクロスコンパイルして環境が過ぎないようになります.具体的には、このようなものを提示します.unrecognized command line option'-m 64'がありますが、このライブラリは削除できます.configureの時にパラメータを追加できます.withousslを削除してください.
質問2:toquebasevisitor.oフォーマットが不正です.
nodejsはコンパイル中に補助ツールを生成してコンパイルを助けます.これらの補助ツールはホストプラットフォーム(コードをコンパイルするマシンのプラットフォーム)であり、ターゲットプラットフォーム(コンパイル結果を実行するためのプラットフォーム)ではなく、クロスコンパイラはコンパイラをターゲットプラットフォームコンパイラに設定しました.途中ツールが正常に生成できなくなりました.この時、ホームバージョンのツールチェーンを設定して解決します.私のコンパイルスクリプトのNative complers部分を詳しく調べてください.