Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

boost-libs failed to be built

Tags:

c++

boost

qnx

During source installation of boost-libs (link to cvs repo), I get the following at the very end of long output of bmake (make that's used in the package manager pkgsrc that I use) and build seems to fail:

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

I noticed, out of thousands of output lines (full output), some lines of error repeatedly appear. I just except some (they don't occur back to back like the following):

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

```

Other boost-related packages (namely boost-headers, boost-jam, boost-docs, boost-build) are already built and installed. boost-python fails but I think it's not depended.

Using QNX 6.5.0 SDP SP1

Thank you.


Update) Responding to @Igor R's comment. Out of many stdint.h found like this:

# 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

it seems to me intleast8_t is defined in /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;
like image 319
IsaacS Avatar asked Mar 21 '26 01:03

IsaacS


1 Answers

Boost assumes that QNX defines non-standard type names:

#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;

But according to what you see in /usr/include/stdint.h, QNX already deprecated these types, and now they are defined only if __EXT_QNX is defined. So, the following ad-hoc patch to boost/cstdint.hpp could help:

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. 

The better way, however, would be to understand since what QNX version the standard types are available, and to define more robust condition.

like image 200
Igor R. Avatar answered Mar 22 '26 13:03

Igor R.



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!