1

我已经尝试了很长一段时间将 node.js 构建到我的 Synology DS1511+ 上。我已经阅读了本教程以及评论,但我仍然遇到了一个奇怪的错误,我无法弄清楚如何构建它。在我运行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 来克服这个问题

4

1 回答 1

1

我刚刚遇到了同样的问题。似乎默认的 glibc libpthread.so (这是在 RHEL 4 上)不包括 pthread_condattr_setclock (即使手册页说它应该这样做并且包含文件也指定了它),我快速浏览了一下,发现 nosgneg版本(来自同一个 glibc 包)确实具有此功能。我不确定这意味着什么,但是在我为节点运行配置之后,我破解了 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 版本。现在节点编译得很好。将不得不做一些测试,看看它是否运行正常。

于 2013-04-30T11:56:08.607 回答