關於交叉編譯Nodejs的坑


前言

交叉編譯Nodejs到其他平台上的時候,遇到了2個坑,網上極少有人提及,花了整個晚上才解決,在此記錄下.
我的編譯目標環境為: 龍芯3A

編譯腳本


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 '-m64'

在編譯nodejs過程中會編譯一個叫做ssl的庫,ssl有個編譯參數"-m64",這個參數會導致部分交叉編譯環境過不去.具體表現為,提示這么個東西:unrecognized command line option '-m64' 不過這個庫可以去掉,可以在configure的時候加參數 --without-ssl 把ssl去掉來解決.

問題2: torquebasevisitor.o格式不正確

nodejs在編譯過程中會生成輔助工具來幫助編譯(輔助工具也由代碼編譯出來),這些輔助編譯得是主機平台(用來編譯代碼的機器的平台)的,不能是目標平台(准備用來執行編譯結果的平台)的,而交叉編譯把編譯器配置成了目標平台編譯器.導致中間工具無法正常生成.
這時候,可以配置host版本的工具鏈,來解決,具體查看我的編譯腳本的Native compilers部分.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM