'2015/12/01'에 해당되는 글 2건

  1. 2015.12.01 #20151201-02 :: C++ :: mongoose web server에서 mg_enable_multithreading 사용
  2. 2015.12.01 #20151201-01 :: C++ :: build cppcsp2-2.0.6 on Mac OS X

#20151201-02 :: C++ :: mongoose web server에서 mg_enable_multithreading 사용

mongoose web server에서 mg_enable_multithreading 함수를 사용하려고 하면

해당 함수에 대한 링크 에러를 만나게 된다.

이유는 MG_ENABLE_THREADS 플래그가 define 되어있지 않기 때문이다.

컴파일 옵션에 위 플래그를 추가해 준다.

ex) POSIX: -DMG_ENABLE_THREADS

#20151201-01 :: C++ :: build cppcsp2-2.0.6 on Mac OS X

Mac OS X 10.11.1 El Capitan

LLVM 7.0.0 (clang-700.1.76)


홈페이지 [다운로드]


cppcsp2-2.0.6을 Mac OS X에서 빌드하려면 수 많은 에러를 만나게 된다.

아래와 같은 방법을 통해 문제를 해결한다.


소스파일을 다운로드 받고 압축을 푼다.

$ cd ~/Downloads

$ tar -vxzf cppcsp2-2.0.6.tar.gz


Makefile 생성을 위해 아래와 같이 스크립트를 실행한다.

$ ./configure


이 상태에서 make를 컴파일 실행하면 에러가 발생한다.


Makefile에 _XOPEN_SOURCE 선언을 추가한다.

$ vi Makefile


   DEFS = … -D_XOPEN_SOURCE


다시 make를 실행해 보지만 또 컴파일 에러가 발생한다.


src/process.h 파일을 수정한다.

$ vi src/process.h


   typedef ucontext Context;       (수정 전)

   typedef ucontext_t Context;    (수정 후)


다시 make 파일을 실행하면 컴파일 에러는 끝나지 않았다.


src/channel_factory.h 파일을 수정한다.

$ vi src/channel_factory.h


:210

deleteAll(o2o);                                                (수정 전)

StandardChannelFactory::deleteAll(o2o);    (수정 후)


이번에는 make를 실행하면 이번에는 링크 에러가 발생한다.


Makefile에서 -lrt 옵션을 제거한다.

$ vi Makefile


   CPPCSP_LINK_LIBS = -ltr -lpthread    (수정 전)

   CPPCSP_LINK_LIBS = -lpthread          (수정 후)


이제 make를 실행하면 성공한다.

make test를 실행하면 유닛테스트 결과를 볼 수 있다.