我已经尝试了一段时间将node.js构建到我的Synology DS1511 +上。我读过this tutorial along with the comments,但我仍然遇到一个奇怪的错误,我无法弄清楚如何构建它。运行sudo make
后,它运行构建正常大约15到20分钟,但后来我得到了这个:
/volume1/homes/admin/node/out/../deps/uv/src/unix/thread.c:286: undefined reference to `pthread_condattr_setclock'
collect2: ld returned 1 exit status
make[1]: *** [/volume1/homes/admin/node/out/Release/node] Error 1
make[1]: Leaving directory `/volume1/homes/admin/node/out'
make: *** [node] Error 2
从错误中看,它似乎与pthread库有关,但我真的不知道是否是这种情况,特别是因为我根据教程替换了pthread库。顺便说一下,本教程展示了如何为基于ARM的处理器构建节点,但我正在构建的Synology是i686。
任何人都知道如何在DS1511 +
上构建node.js来解决这个问题答案 0 :(得分:1)
我遇到了同样的问题。看来默认的glibc libpthread.so(这是在RHEL 4上)不包括pthread_condattr_setclock(尽管man-page说它应该这样做,而include文件也指定了它),我快速浏览了一下,发现了nosegneg版本(来自相同的glibc包)确实具有此功能。我不确定其含义是什么,但在我为节点运行configure后,我将pyg(out / node.target.mk)脚本破解为:
LDFLAGS_Debug := \
-L/lib/tls/i686/nosegneg/ -lpthread-2.3.4 \
-rdynamic \
-m32 \
-pthread
LDFLAGS_Release := \
-L/lib/tls/i686/nosegneg/ -lpthread-2.3.4 \
-rdynamic \
-m32 \
-pthread
LIBS := \
-lc-2.3.4 \
-lm-2.3.4 \
-ldl \
-lrt-2.3.4
其中2.3.4是我们目前的glibc版本。现在节点编译得很好。将不得不做一些测试,看它是否正常运行。