2011-03-19 2 views
2

Solaris에 Node.JS를 설치하려고합니다. 이것은 Solaris 9/10 x86 (2010 년 9 월)이며 최신 패키지이며 기본 패키지 만 사용합니다.Solaris에서 Node.JS 빌드 : "<stdbool.h>의 사용은 c99 컴파일 환경에서만 유효합니다."

내가 따르고있는 방향은 다음과 같습니다. https://github.com/joyent/node/wiki/Installation. 나는

-bash-3.00# export PATH=$PATH:/usr/sfw/bin:/usr/xpg4/bin 
-bash-3.00# ./configure --prefix=/tmp/node 
Checking for program g++ or c++   : /usr/sfw/bin/g++ 
Checking for program cpp     : /usr/sfw/bin/cpp 
Checking for program ar     : /usr/xpg4/bin/ar 
Checking for program ranlib    : not found 
Checking for g++       : ok 
Checking for program gcc or cc   : /usr/sfw/bin/gcc 
Checking for program ar     : /usr/xpg4/bin/ar 
Checking for program ranlib    : not found 
Checking for gcc       : ok 
Checking for library dl     : yes 
Checking for openssl      : yes 
Checking for library util    : not found 
Checking for library rt     : yes 
Checking for library socket    : yes 
Checking for library nsl     : yes 
--- libeio --- 
Checking for library pthread    : yes 
Checking for function pthread_create  : yes 
Checking for function pthread_atfork  : yes 
Checking for futimes(2)     : no 
Checking for readahead(2)    : no 
Checking for fdatasync(2)    : no 
Checking for pread(2) and pwrite(2)  : yes 
Checking for sendfile(2)     : no 
Checking for sync_file_range(2)   : no 
--- libev --- 
Checking for header sys/inotify.h  : not found 
Checking for header sys/epoll.h   : not found 
Checking for header port.h    : yes 
Checking for function port_create  : yes 
Checking for header poll.h    : yes 
Checking for function poll    : yes 
Checking for header sys/event.h   : not found 
Checking for header sys/queue.h   : yes 
Checking for function kqueue    : not found 
Checking for header sys/select.h   : yes 
Checking for function select    : yes 
Checking for header sys/eventfd.h  : not found 
Checking for SYS_clock_gettime   : no 
Checking for library rt     : yes 
Checking for function clock_gettime  : yes 
Checking for function nanosleep   : yes 
Checking for function ceil    : yes 
Checking for fdatasync(2) with c++  : no 
'configure' finished successfully (1.936s) 
-bash-3.00# make 
Waf: Entering directory `/tmp/node-v0.4.3/build' 
DEST_OS: sunos 
DEST_CPU: ia32 
Parallel Jobs: 1 
Product type: program 
[ 3/75] cc: deps/c-ares/ares_strcasecmp.c -> build/default/deps/c-ares/ares_strcasecmp_1.o 
/usr/sfw/bin/gcc -D_GNU_SOURCE -DHAVE_CONFIG_H=1 -threads -m32 -g -O3 -DHAVE_OPENSSL=1 -DEV_FORK_ENABLE=0 -DEV_EMBED_ENABLE=0 -DEV_MULTIPLICITY=0 -DX_STACKSIZE=65536 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DEV_MULTIPLICITY=0 -DHAVE_FDATASYNC=0 -DPLATFORM="sunos" -D__POSIX__=1 -Wno-unused-parameter -D_FORTIFY_SOURCE=2 -DNDEBUG -Idefault/deps/c-ares -I../deps/c-ares -Idefault/deps/c-ares/sunos-ia32 -I../deps/c-ares/sunos-ia32 ../deps/c-ares/ares_strcasecmp.c -c -o default/deps/c-ares/ares_strcasecmp_1.o 
In file included from ../deps/c-ares/setup_once.h:73, 
       from ../deps/c-ares/sunos-ia32/ares_setup.h:195, 
       from ../deps/c-ares/ares_strcasecmp.c:18: 
/usr/include/stdbool.h:42:2: #error "Use of <stdbool.h> is valid only in a c99 compilation environment." 
Waf: Leaving directory `/tmp/node-v0.4.3/build' 
Build failed: -> task failed (err #1): 
     {task: cc ares_strcasecmp.c -> ares_strcasecmp_1.o} 
*** Error code 1 
The following command caused the error: 
python tools/waf-light --product-type=program build 
make: Fatal error: Command failed for target `program' 
-bash-3.00# 

내가 키 오류가

/usr/include/stdbool.h:42:2: #error "Use of <stdbool.h> is valid only in a c99 compilation environment." 

생각 ... http://nodejs.org 여기

내가 시도 무엇을 자신의 홈 페이지에서 볼 Node.js를 최신 안정 버전을 사용하고 있습니다 나는 이렇게 재창조 할 수있다.

-bash-3.00# cd build 
-bash-3.00# /usr/sfw/bin/gcc -D_GNU_SOURCE -DHAVE_CONFIG_H=1 -threads -m32 -g -O3 -DHAVE_OPENSSL=1 -DEV_FORK_ENABLE=0 -DEV_EMBED_ENABLE=0 -DEV_MULTIPLICITY=0 -DX_STACKSIZE=65536 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DEV_MULTIPLICITY=0 -DHAVE_FDATASYNC=0 -DPLATFORM="sunos" -D__POSIX__=1 -Wno-unused-parameter -D_FORTIFY_SOURCE=2 -DNDEBUG -Idefault/deps/c-ares -I../deps/c-ares -Idefault/deps/c-ares/sunos-ia32 -I../deps/c-ares/sunos-ia32 ../deps/c-ares/ares_strcasecmp.c -c -o default/deps/c-ares/ares_strcasecmp_1.o 
In file included from ../deps/c-ares/setup_once.h:73, 
       from ../deps/c-ares/sunos-ia32/ares_setup.h:195, 
       from ../deps/c-ares/ares_strcasecmp.c:18: 
/usr/include/stdbool.h:42:2: #error "Use of <stdbool.h> is valid only in a c99 compilation environment." 
-bash-3.00# cd .. 
-bash-3.00# 

어떤 아이디어라도? C99을 사용하거나 C99를 사용하지 않으려면 다른 옵션을 지정해야합니까?

다시 말하지만, 이것은 x86 기반의 Solaris 9/10 버전에서 나온 것입니다. 나는 컴파일러를 바꾸거나, 기본적으로 설치되는 다른 것들을 변경하지 않았다.

답변

3

한번에과 같이, ./configure를 호출하기 전에 CFLAGS--std=c99 또는 -std=gnu99를 추가 :

CFLAGS=-std=c99 ./configure --prefix=/tmp/node

이 오류가 AC_PROG_CC_C99를 사용해야하는 경우 Node.js를 아마 그 configure.ac 스크립트 AC_PROG_CC을 사용하고 있음을 의미한다, the page on C compiler detection on autoconf's manual을 참조하십시오. 이 버그를 Node.JS 개발자에게보고하고 적절한 솔루션이 시스템에서 작동하는지 테스트해야합니다.

+0

'c99'는 약 1 초 동안 오류가 발생하지 않는 수명을 증가 시켰습니다. 그러나'gnu99'는 7 분 동안 일했다. 감사! –