본문 바로가기

개발/NODE

node에 c/c++ 코드 붙이기

서버 환경

CentOS release 6.6

커널 - 2.6.32-504.el6.x86_64


1. addon 살펴보기

LTS 버전인 node v4.5.0 문서에서 c/c++ addons 부분 참고

https://nodejs.org/dist/latest-v4.x/docs/api/addons.html



2. node-gyp 설치

addon을 사용하기 위해서는 node-gyp를 설치해야 한다.

https://github.com/nodejs/node-gyp



3. gcc 설치 or 버전 업

gcc 버전이 4.4 버전이라 node-gyp build가 제대로 진행되지 않았다. 

아래 링크를 참고하여 4.8로 버전 업하였다.

https://gist.github.com/stephenturner/e3bc5cfacc2dc67eca8b 


제대로 동작이 안된다면 아래 참고.

* 기존 gcc, g++가 있는 bin 디렉토리에 업그레이드 한 gcc, g++ 복사

* $gcc -print-prog-name=cc1 명령을 이용하여 4.8 버전 디렉토리가 존재하는지 체크 후 없다면 설치한 4.8 디렉토리를 복사

* gcc 라이브러리도 버전 업 한 디렉토리를 기존 디렉토리(/usr/lib/gcc/x86_64-redhat-linux/)에 복사

* as 바이너리 파일도 /usr/bin으로 복사 (어셈블러 버전이 낮아 Error: expecting string instruction after `rep'과 같은 에러 발생 시)

* 한줄요약 - 기존 gcc, g++을 업그레이드 한 버전의 gcc, g++로 바꿔야 한다. (실행 파일, 라이브러리, 헤더 등등)


4. sample 진행

node 문서에 나온 샘플을 가지고 진행을 하였다.


java -> c++ convert 

https://blog.scottfrees.com/type-conversions-from-javascript-to-c-in-v8


exception handling disabled, use -fexceptions to enable 에러 처리

https://github.com/nodejs/node-gyp/issues/17



5. node 버전이 다른 경우?

node의 버전이 다른 경우 제대로 적용이 되지 않는다.

컴파일 시 참조하는 node 파일이 다르기 때문인듯.. node 버전을 맞춰서 node-gyp으로 컴파일 하자.



6. 윈도우의 경우...

centos에서 컴파일하고 잘 적용이 되었다 싶었는데 윈도우 환경에서 개발하시는 분들은 해당 파일이 적용이 되지 않았다...

윈도우 환경에서 컴파일을 진행해야 한다.

node-gyp에서 windows용 설정을 진행하고 cmd를 실행 후 c/c++ 소스 파일이 있는 경로로 이동 후 build 작업을 진행하면 된다.


'개발 > NODE' 카테고리의 다른 글

express body-parser 관련  (0) 2018.03.26
이클립스에서 Node 설정  (0) 2016.10.13
node update  (0) 2016.10.12
node를 사용하여 ffmpeg 이용하여 ebur128 기준 인코딩  (0) 2016.08.01
Node Express를 이용한 Cookie Set  (1) 2016.03.16