лог буста с бустом 1.48 на OSX 10.7.2 - PullRequest
3 голосов
/ 06 января 2012

Я извлек последнюю версию журнала BOOST из https://boost -log.svn.sourceforge.net / svnroot / boost-log / trunk / и попытался собрать его в соответствии с моей текущей установкой BOOST (1.47) на osxЛев (10.7.2), и он пожаловался, что ему нужно повысить 1.48.

Так что я потянул вниз и собрал BOOST 1.48, и все прошло нормально.Затем я обновил свою установку BOOST и запустил начальную загрузку следующим образом:

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

все отлично на этом этапе.Однако теперь, когда я запускаю:

sudo ./b2

я получаю следующие ошибки:

...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...

Я посмотрел на материал установки журнала BOOST, и есть несколько директив, но ничего очевидного в этом нет,Кто-нибудь даст мне несколько подсказок по этому поводу?Я не нахожу ничего в переполнении стека или в сети, что заставляет меня думать, что я что-то упускаю.Таймеры posix, которые не поддерживаются, являются довольно определенным сообщением ...

заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 02 февраля 2012

Эта проблема была исправлена ​​в r655.

Проблема в том, что Darwin не поддерживает расширение POSIX, которое обеспечивает clock_gettime().Тем не менее, у Дарвина есть монотонные часы высокого разрешения, доступные в mach/mach_time.h и называемые mach_absolute_time().Начиная с r655, Boost Log использует эту функцию в Mac OS.

Если вы хотите установить последнюю версию Boost без каких-либо проблем, а также воспользоваться преимуществами C ++ 11, ознакомьтесь с my customPortfile .Например, он позволяет установить Boost следующим образом:

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

, где вариант +log извлекает самую последнюю версию SVN.

1 голос
/ 06 января 2012

Вкратце, глядя на код, похоже, что boost-log не был написан для поддержки Mac OS X, в которой нет реализации таймеров Posix.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...