1

私はかなり長い間、Synology DS1511+ に node.js をビルドしようとしました。コメントとともにこのチュートリアルを読みましたが、ビルド方法がわからないという奇妙なエラーが発生します。実行後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 が含まれていないようです (マンページにはそうすべきだと書かれており、インクルード ファイルにも指定されています)。バージョン (同じ 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 に答える