vxworks and pre-built boost libraries
I'm attempting to use boost in vxworks 6.5 and I'm looking for information on how to get the pre-built libraries to build (those that can be). Some amount of support for vxworks was added back in 1.38, but vxworks isn't on the list of available/supported target OSs. Are there any resources out there detailing what can be made to work/does work/doesn't work, and what needs to be done to get the workable stuff to build? Thanks for your time. -Brian
On Fri, Jul 29, 2011 at 1:11 PM, Brian Vandenberg
I'm attempting to use boost in vxworks 6.5 and I'm looking for information on how to get the pre-built libraries to build (those that can be).
Some amount of support for vxworks was added back in 1.38, but vxworks isn't on the list of available/supported target OSs. Are there any resources out there detailing what can be made to work/does work/doesn't work, and what needs to be done to get the workable stuff to build?
I'm no expert on boost, but it's really going to depend on (a) which portions of boost you want and (b) how you'll be running vxworks (kernel vs. RTP) and what target. 6.5 has issues in many places, some targets more than others. Maybe consider being more specific? That said, you'd also have to set up bjam for a cross-compile, so it'd also help to know the host environment.
I'm no expert on boost, but it's really going to depend on (a) which portions of boost you want and (b) how you'll be running vxworks (kernel vs. RTP) and what target.
Immediately, I'm looking to get boost::serialization working. We use vxworks on ppc boards as well as their 'vxsim' environment -- which is code compiled to run natively in the host environment. The sim environment may be running under sparc or x86 hardware, so we were toying with the idea of resolving endianness issues with boost::serialization. That said, it isn't the only one we're interested in using, it's just the one I'm focusing on at the moment.
6.5 has issues in many places, some targets more than others. Maybe consider being more specific?
We may be upgrading our license to 6.7 soon. Any problems in particular that may get in the way of using boost? I'm more or less looking for some sort of outline of what others have done to use boost in vxworks. Everything I've found while googling indicates others have asked and figured it out, but never posted back to the original forums indicating what they did to get it working, or otherwise got it working and had problems further down the road. Thanks for your swift response, I appreciate it. -Brian
On Fri, Jul 29, 2011 at 1:52 PM, Brian Vandenberg
I'm no expert on boost, but it's really going to depend on (a) which portions of boost you want and (b) how you'll be running vxworks (kernel vs. RTP) and what target.
Immediately, I'm looking to get boost::serialization working. We use vxworks on ppc boards as well as their 'vxsim' environment -- which is code compiled to run natively in the host environment. The sim environment may be running under sparc or x86 hardware, so we were toying with the idea of resolving endianness issues with boost::serialization.
That said, it isn't the only one we're interested in using, it's just the one I'm focusing on at the moment.
I've not used serialization before; if it's a header-only part of boost, then your chances of it just working go up. In my experience, the vxsim environment is not particularly robust, though it appears to improve with each release. Most of my work with vxworks has been with arcane targets such that using vxsim created a false sense of utopia--things worked on the sim but not on the actual target. PPC is at least a well-trod area for vxworks, so that's a significant thing in your favor.
6.5 has issues in many places, some targets more than others. Maybe consider being more specific?
We may be upgrading our license to 6.7 soon. Any problems in particular that may get in the way of using boost?
My memory is that 6.5, though a substantial improvement over 6.4, was still flaky. 6.7 was much improved both in the toolchain and the OS itself. If you're using bog-standard BSPs, though, you're less likely to get bitten.
I'm more or less looking for some sort of outline of what others have done to use boost in vxworks. Everything I've found while googling indicates others have asked and figured it out, but never posted back to the original forums indicating what they did to get it working, or otherwise got it working and had problems further down the road.
I can't help with that; sorry. Were I to pursue that, I would start with bjam and look at what's required to cross-compile boost. But if you're only looking for serialization, start small at that level.
Thanks for your swift response, I appreciate it.
-Brian _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
I've not used serialization before; if it's a header-only part of boost, then your chances of it just working go up.
Unfortunately it's not header-only.
I can't help with that; sorry. Were I to pursue that, I would start with bjam and look at what's required to cross-compile boost. But if you're only looking for serialization, start small at that level.
It looks as though serialize won't work for us for a few reasons, among them is that [this version of vxworks?] doesn't have stellar support for wchar_t, and boost::serialization appears to be tied pretty strongly to it -- that is, all attempts at disabling wide character support didn't seem to allow boost::serialization to build. Though, I did get boost::regex to build. For future reference in case anyone else is working on something similar: ./bjam -a --with-regex toolset=gcc target-os=linux threading=single define=DISABLE_WIDE_CHAR_SUPPORT define=BOOST_NO_STD_WSTRING define=__VXWORKS__ define="CPU=${VXSIMCPU}" define=VXSIM define="TOOL_FAMILY=gnu" define="TOOL=gnu" define=_REENTRANT include=${WIND_BASE}/target/h A few notes on that: * ${VXSIMCPU} is an environment variable I created that, in my environment, was either SIMSPARCSOLARIS, SIMPENTIUM, SIMLINUX, or something similar. * The rest of the defines I'm more sure of, but I don't know whether _REENTRANT actually did anything useful; I was more or less in shotgun mode by that point. * The include paths and possibly other defines may need tweaking to get other libraries to build. 'system', for example, wouldn't build at all. -Brian
A few notes on that:
* ${VXSIMCPU} is an environment variable I created that, in my environment, was either SIMSPARCSOLARIS, SIMPENTIUM, SIMLINUX, or something similar. * The rest of the defines I'm more sure of, but I don't know whether _REENTRANT actually did anything useful; I was more or less in shotgun mode by that point. * The include paths and possibly other defines may need tweaking to get other libraries to build. 'system', for example, wouldn't build at all.
... I also changed (...)/boost/tools/build/v2/user-config.jam to use the appropriate compiler (ccpentium, ccsparc, etc) for the gcc toolchain. -Brian
participants (2)
-
Brian Vandenberg
-
Chris Cleeland