Question

Does anyone have any experience with running C++ applications that use the boost libraries on uclibc-based systems? Is it even possible? Which C++ standard library would you use? Is uclibc++ usable with boost?

Was it helpful?

Solution

We use Boost together with GCC 2.95.3, libstdc++ and STLport on an ARMv4 platform running uClinux. Some parts of Boost are not compatible with GCC 2.x but the ones that are works well in our particular case. The libraries that we use the most are date_time, bind, function, tuple and thread.

Some of the libraries we had issues with were lambda, shared_pointer and format. These issues were most likely caused by our version of GCC since it has problems when you have too many includes or deep levels of template structures.

If possible I would recommend you to run the boost test suite with your particular toolchain to ensure compatibility. At the very least you could compile a native toolchain in order to ensure that your library versions are compatible.

We have not used uClibc++ because that is not what our toolchain provider recommends so I cannot comment on that particular combination.

OTHER TIPS

We are using many of the Boost libraries (thread, filesystem, signals, function, bind, any, asio, smart_ptr, tuple) on an Arcom Vulcan which is admittedly pretty powerful for an embedded device (64M RAM, 533MHz XScale). Everything works beautifully.

GCC 3.4 but we're not using uclib++ (Arcom provides a toolchain which includes libstd++).

Many embedded devices will happily run many of the Boost libraries, assuming decent compiler support. Just take care with usage. The Boost libraries raise the level of abstraction and it can be easy to use more resources than you think.

I googled "uclibc stlport". It seems there are at least a few versions of uclibc for which stlport can be compiled (see this). Given that, i'd say Boost is just a few compilation steps away. I have read a message by David Abrahams (who is an active member of the boost community) that says that Boost does not depend directly on the used libc. But some libraries may still cause problems, Boost.Python for instance, since it depends on something else (Python in my example) that might be difficult to compile with uclibc.

Hope this helps

I have not tried but I don't know anything about uclibc that would prevent Boost from working.

Try it and see what happens, I would say.

Yes you can use boost with uclibc.
I tried this with boost 1.45 & uclibc on ARM9260

  1. Use fresh OpenEmbedded
  2. Configure it to use Angstrom
  3. Configure Angstrom to use uclibc
  4. make boost - bitbake boost
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top