在Synology DS1511 +上尝试构建节点j时,错误不断出现

时间:2013-04-02 19:31:01

标签: node.js synology

我已经尝试了一段时间将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来解决这个问题

1 个答案:

答案 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版本。现在节点编译得很好。将不得不做一些测试,看它是否正常运行。