2012-01-06 2 views
3

나는 최신 BOOST 로그를 https://boost-log.svn.sourceforge.net/svnroot/boost-log/trunk/에서 가져 와서 osx 사자 (10.7.2)의 현재 BOOST 설치 (1.47)에 대해 빌드를 시도했지만 부스트 1.48이 필요하다고 불평했습니다.OSX 10.7.2에서 부스트 1.48으로 부스트 로그

그래서 나는 아래로 당겨서 모두 좋았던 1.48을 만들었다. 그런 다음 부스트 설치를 업데이트하고 다음과 같이 부트 스트랩을 실행했습니다.

/bootstrap.sh --with-libraries=log --prefix=/usr/local 
    --includedir=/usr/local/include --libdir=/usr/local/lib 

이 시점에서 문제가 없습니다. 그러나, 이제, 내가 실행하면 내가 BOOST 보았다

...found 2606 targets... 
...updating 9 targets... 
darwin.compile.c++ bin.v2/libs/log/build/darwin-4.2.1/release/threading-multi/tick_count.o 
libs/log/src/tick_count.cpp:220:5: error: #error Boost.Log: POSIX timers not 
supported on your platform 

"g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -dynamic 
-no-cpp- precomp -gdwarf-2 -fexceptions -fPIC -DBOOST_ALL_NO_LIB=1 
DBOOST_DATE_TIME_DYN_LINK=1 - DBOOST_FILESYSTEM_DYN_LINK=1 
-DBOOST_LOG_BUILDING_THE_LIB=1 -DBOOST_LOG_DLL - DBOOST_LOG_USE_NATIVE_SYSLOG=1 
-DBOOST_SYSTEM_DYN_LINK=1 -DBOOST_THREAD_POSIX - DBOOST_THREAD_USE_DLL=1 - 
DDATE_TIME_INLINE -DNDEBUG -I"." -c -o "bin.v2/libs/log/build/darwin-4.2.1/release/threading-multi/tick_count.o" "libs/log/src/tick_count.cpp" 

...failed darwin.compile.c++ bin.v2/libs/log/build/darwin-4.2.1/release/threading-multi/tick_count.o... 
...skipped <pbin.v2/libs/log/build/darwin-4.2.1/release/threading-multi>libboost_log.dylib for lack of <pbin.v2/libs/log/build/darwin-4.2.1/release/threading-multi>tick_count.o... 
...skipped <pstage/lib>libboost_log.dylib for lack of <pbin.v2/libs/log/build/darwin- 4.2.1/release/threading-multi>libboost_log.dylib... 
...skipped <pbin.v2/libs/log/build/darwin-4.2.1/release/threading-multi>libboost_log_setup.dylib for lack of <pbin.v2/libs/log/build/darwin-4.2.1/release/threading-multi>libboost_log.dylib... 
...skipped <pstage/lib>libboost_log_setup.dylib for lack of <pbin.v2/libs/log/build/darwin-4.2.1/release/threading-multi>libboost_log_setup.dylib... 
darwin.compile.c++ bin.v2/libs/log/build/darwin-4.2.1/release/link-static/threading-multi/tick_count.o 
libs/log/src/tick_count.cpp:220:5: error: #error Boost.Log: POSIX timers not supported on your platform 

"g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -no-cpp-precomp -gdwarf-2 -fexceptions -DBOOST_ALL_NO_LIB=1 -DBOOST_LOG_BUILDING_THE_LIB=1 -DBOOST_LOG_USE_NATIVE_SYSLOG=1 -DBOOST_SYSTEM_STATIC_LINK=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_LIB=1 -DDATE_TIME_INLINE -DNDEBUG -I"." -c -o "bin.v2/libs/log/build/darwin-4.2.1/release/link-static/threading-multi/tick_count.o" "libs/log/src/tick_count.cpp" 

...failed darwin.compile.c++ bin.v2/libs/log/build/darwin-4.2.1/release/link-static/threading-multi/tick_count.o... 
...skipped <pbin.v2/libs/log/build/darwin-4.2.1/release/link-static/threading-multi>libboost_log.a(clean) for lack of <pbin.v2/libs/log/build/darwin-4.2.1/release/link-static/threading-multi>tick_count.o... 
...skipped <pbin.v2/libs/log/build/darwin-4.2.1/release/link-static/threading-multi>libboost_log.a for lack of <pbin.v2/libs/log/build/darwin-4.2.1/release/link-static/threading-multi>tick_count.o... 
...skipped <pstage/lib>libboost_log.a for lack of <pbin.v2/libs/log/build/darwin-4.2.1/release/link-static/threading-multi>libboost_log.a... 
...failed updating 2 targets... 
...skipped 7 targets... 

물건을 설치 로그인하고 몇 가지 지침하지만 이에 대한 명백한 아무것도가 :

sudo ./b2 

나는 다음과 같은 오류를 얻을. 누구든지 이것에 대해 몇 가지 단서를 제공합니까? 나는 스택 오버플로나 웹에서 아무것도 찾지 못한다. 그래서 나는 뭔가를 놓치고 있다고 생각하게 만든다. 지원되지 않는 posix 타이머는 꽤 확실한 메시지입니다 ...

미리 감사드립니다.

+0

간단히 보면 boost-log는 Posix 타이머를 구현하지 않은 Mac OS X을 지원하기 위해 작성된 것이 아닙니다 – alanxz

+0

@alanx : 답변을 작성합니다. upvote : – neuro

답변

1

간단히 코드를 보면 boost-log는 Posix 타이머 구현이없는 Mac OS X를 지원하도록 작성되지 않았습니다.

+0

부스트에서 1.48 페이지에서는 Mac OS X gcc 4.2.1 및 4.4.4로 컴파일되므로 OSX에서 실행할 수 있어야합니다. http://www.boost.org/users/history/version_1_48_0.html – TheSquad

+0

know boost-log은 아직 공식 라이브러리가 아니므로 Mac OS X에서 컴파일/기능 할 것이라는 보장이 없습니다. – alanxz

+0

Clarifying : 부스트 로그는 아직 공식적인 부스트 라이브러리가 아닙니다. – alanxz

2

이 문제는 r655에서 수정되었습니다.

다윈은 clock_gettime()을 제공하는 POSIX 확장 기능이 없다는 점이 문제입니다. 그러나 다윈에는 mach/mach_time.hmach_absolute_time()이라는 고해상도 모노 크로 시계가 있습니다. r655부터 Boost Log는 Mac OS에서이 기능을 사용합니다.

고통없이 가장 최근의 부스트 버전을 설치하고 C++ 11의 이점을 누리려면 my custom Portfile을 확인하십시오. +log 변형이 가장 최근의 SVN 버전을 끌어

sudo port install boost +cxx11 +log +debug +no_single 

: 예를 들어, 다음과 같이 부스트를 설치할 수 있습니다.