Во время установки источника boost-libs
(ссылка на репо cvs), Я получаю следующее в самом конце длинного вывода bmake (make
это используется в менеджере пакетов pkgsrc
что я использую) и сборка, кажется, не удается:
...skipped <pbin.v2/libs/wave/build/gcc-4.4.2/release/link-static/threading-multi>libboost_wave.a for lack of <pbin.v2/libs/wave/build/gcc-4.4.2/release/link-static/threading-multi>instantiate_cpp_exprgrammar.o...
...skipped <pstage/lib>libboost_wave.a for lack of <pbin.v2/libs/wave/build/gcc-4.4.2/release/link-static/threading-multi>libboost_wave.a...
...failed updating 181 targets...
...skipped 280 targets...
*** Error code 1
Stop.
bmake: stopped in /usr/pkgsrc/devel/boost-libs
*** Error code 1
Я заметил, из тысяч выходных строк (полный вывод), несколько строк ошибок появляются неоднократно. Я только за исключением некоторых (они не происходят спина к спине, как показано ниже):
g++: unrecognized option '-pthread'
./boost/cstdint.hpp:74: error: 'intleast8_t' in namespace '::' does not name a type
./boost/cstdint.hpp:76: error: 'uintleast8_t' in namespace '::' does not name a type
./boost/chrono/detail/inlined/posix/chrono.hpp:23: error: '::clock_gettime' has not been declared
./boost/chrono/detail/inlined/posix/chrono.hpp:36: error: '::clock_gettime' has not been declared
./boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp:31: error: '::sysconf' has not been declared
./boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp:31: error: '_SC_CLK_TCK' was not declared in this scope
/usr/qnx650/host/qnx6/x86/usr/bin/ntox86-ld: cannot find -lrt
./boost/smart_ptr/detail/yield_k.hpp:123: error: 'nanosleep' was not declared in this scope
./boost/thread/pthread/timespec.hpp:84: error: '::clock_gettime' has not been declared
./boost/thread/pthread/mutex.hpp:275: error: 'boost::chrono::steady_clock' has not been declared
libs/filesystem/src/operations.cpp: In function 'bool<unnamed>::remove_directory(const boost::filesystem::path&)':
libs/filesystem/src/operations.cpp:345: error: '::rmdir' has not been declared
libs/filesystem/src/operations.cpp:348: error: '::unlink' has not been declared
libs/filesystem/src/operations.cpp:427: error: no matching function for call to 'stat::stat(const char*, stat*)'
libs/filesystem/src/operations.cpp:1003: error: '::symlink' has not been declared
« `
Другой boost
связанные пакеты (а именно boost-headers, boost-jam, boost-docs, boost-build) уже собраны и установлены. boost-python
не удается, но я думаю, что это не зависит.
С помощью QNX
6.5.0 SDP SP1
Спасибо.
Обновление) Ответ на комментарий @Igor R. Из многих stdint.h
нашел вот так:
# find /usr -iname 'stdint.h'
/usr/share/pkgsrc/archivers/gtar-base/work/tar-1.26/gnu/stdint.h
/usr/qnx650/target/qnx6/usr/include/c++/4.4.2/tr1/stdint.h
/usr/qnx650/target/qnx6/usr/include/stdint.h
/usr/include/c++/4.4.2/tr1/stdint.h
/usr/include/stdint.h
по-моему intleast8_t
определяется в /usr/include/stdint.h
:
# more /usr/include/stdint.h
:
#if defined(__EXT_QNX)
/*
* These types are deprecated and applications should use the
* int_/uint_ types defined below.
*/
typedef _Intleast8t intleast8_t;
typedef _Uintleast8t uintleast8_t;
Boost предполагает, что QNX определяет нестандартные имена типов:
#ifdef __QNX__
// QNX (Dinkumware stdlib) defines these as non-standard names.
// Reflect to the standard names.
typedef ::intleast8_t int_least8_t;
typedef ::intfast8_t int_fast8_t;
Но в соответствии с тем, что вы видите в /usr/include/stdint.h
QNX уже не поддерживает эти типы, и теперь они определяются только в том случае, если __EXT_QNX
определено. Итак, следующий специальный патч для boost/cstdint.hpp
может помочь:
9 9 # endif
10 10
11 - #ifdef __QNX__
11 + #if defined(__QNX__) && defined(__EXT_QNX)
12 12
13 13 // QNX (Dinkumware stdlib) defines these as non-standard names.
Однако лучше было бы понять, с какой версии QNX доступны стандартные типы, и определить более устойчивые условия.
Других решений пока нет …