Как скомпилировать NodeJS на D-Link DNS 325 с установленным fun_plug 0.5? - PullRequest
3 голосов
/ 17 декабря 2011

Я пытаюсь скомпилировать Node на моем устройстве NAS, но я получаю эту ошибку, и я действительно не знаю, как заставить это работать:

/node-v0.6.6/deps/v8/src/arm/constants-arm.h:33:2: error: #error ARM EABI support is 

required.
scons: *** [obj/release/accessors.o] Error 1
scons: building terminated because of errors.
Waf: Leaving directory `/ffp/home/root/node-v0.6.6/out'
Build failed:  -> task failed (err #2): 
    {task: libv8.a SConstruct -> libv8.a}

Удалось ли кому-то действительно заставить Node компилироваться на NAS D-Link? Кто-нибудь знает какие-либо официальные руководства по этому вопросу или куда мне обратиться за помощью?

Большое спасибо.

1 Ответ

5 голосов
/ 22 декабря 2011

DNS320, Fonzplug, NodeJS, Funplug (DNS323, моя первоначальная цель) также, по-видимому, применимы к шеевому плагину !!.

(в интересах 323 компиляция занимает около 7,5 часов, а 320занимает 1 час, 3 минуты)

(также компиляция на 1G8 Intel Linux (Debian) занимает около 15 минут)

=============================== ПРИМЕЧАНИЕ: на плагине fonz - вам необходимо установить следующее:

  • binutils
  • Элемент списка
  • заголовки ядра
  • pkg-config
  • uclibc
  • gcc
  • make
  • gettext
  • patch
  • bison
  • flex
  • autoconf
  • automake

==============================тогда вы можете:

exported TMPDIR=/ffp/tmp        (need this to put tmp files on HD not in memory!)

export CC='gcc -march=armv5t -mfloat-abi=softfp -fno-tree-sink -O0'
export CCFLAGS='-march=armv5t -mfloat-abi=softfp -fno-tree-sink -O0'
export CXX='g++ -march=armv5t -mfloat-abi=softfp -fno-tree-sink -O0'
export GCC='-march=armv5t -mfloat-abi=softfp -fno-tree-sink -O0'

./configure --prefix=/ffp --without-snapshot
......
make
.............
make install

Примечания:

У меня был опыт работы с NodeJS 0.4.9 - так что я продолжал его использовать - читайте дальше, почему !!

фактически компилируется без ошибок !!НО!

при запуске - Недопустимая инструкция - выскакивает

это происходит потому, что V8 ОЖИДАЕТСЯ для компиляции на главном компьютере, который НЕ является устройством !!

см. ниже ссылки, которые я нашел: (Мне потребовалось 6 месяцев, чтобы найти все это) Кто-то где-то решил, что работа на ARM - это встроенная среда, поэтому вы никогда не скомпилируете ее !!

Может ли кто-нибудь с полномочиями исправить это !!!!!!!!

Тот факт, что я могу получить чистую компиляцию, говорит, что она может работать, но по крайней мере V8 не хочет, чтобы мы тоже ????

оригинальные инструкции: https://github.com/joyent/node/wiki/Installation

Что еще я нашел:

http://code.google.com/p/v8/wiki/CrossCompilingForARM
http://code.google.com/p/v8/issues/detail?id=914
http://code.google.com/p/v8/issues/detail?id=1632&q=vfp%20off&colspec=ID%20Type%20Status%20Priority%20Owner%20Summary%20HW%20OS%20Area%20Stars
https://github.com/joyent/node/issues/1566
http://fastr.github.com/articles/Node.js-on-OpenEmbedded.html
http://freebsd.1045724.n5.nabble.com/problems-with-cvsup-on-FreeBSD-9-snapshot-201101-td4491053.html
http://code.google.com/p/v8/issues/detail?id=1446
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dai0133c/index.html
http://infocenter.arm.com/help/topic/com.arm.doc.qrc0007e/QRC0007_VFP.pdf
https://github.com/joyent/node/issues/1386
https://github.com/joyent/node/issues/2131

и из этой статьи минимальные установки fonz, которые необходимо предварительно-установлено:

http://www.shadowandy.net/2008/08/adding-compiling-capabilities-to-your-dns-323.htm

DNS323 - вики-сайт (новый ?? !!)

http://dns323.kood.org/dns-320
http://tsd.dlink.com.tw/downloads2008detail.asp (open source for dlink find dns then 320 - or 323 etc)

опции компилятора:

http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html

опции отладки: http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html

Проценты:

http://itrs.tw/wiki/Code_Sourcery_G%2B%2B_Lite
http://pandorawiki.org/Floating_Point_Optimization
http://wiki.debian.org/ArmHardFloatPort/VfpComparison
https://groups.google.com/group/nodejs-dev/browse_thread/thread/18bfc495b01e2f9b/8507143b5578ebf9#8507143b5578ebf9
http://stackoverflow.com/questions/6788768/cannot-build-node-on-sheevaplug-armv5t-with-debian-squeeze/6790823#6790823
http://www.plugcomputer.org/plugwiki/index.php/Scratchbox2_based_cross_compiling

Почему 0,4,9, а не 0,6,6?6.6 может быть в том же месте, но ошибка говорит об ошибке EABI, компилятор с Fonz не понимает EABI.

Я думаю, что ребята из V8 (или ребята из узла) переименовали дескриптор ошибки в EABI, я нене знаю достаточно, чтобы отследить проблему.Для компиляторов есть куча других переключателей - я перестал их пробовать (другие люди, похоже, нашли ту же проблему, они НАМНОГО более осведомлены, чем я, поэтому я собираюсь предположить, что они перепробовали вседоступные ключи, которые могут иметь значение).

Интересно, что компиляция V8 использует только компилятор CXXFLAGS, в то время как остальная часть NodeJS, кажется, использует другие, которые я пометил !!

Также обратите внимание, что для запуска снимка он указывает на / tmp - независимо от того, что я делаю, - в итоге я переместил / tmp в / tmp1 и ln -s / tmp / ffp / tmp, т.е.

mv / tmp / tmp1

ln -s / tmp / ffp / tmp


...