id summary reporter owner description type status milestone component version severity resolution keywords cc 6766 incorrect declaration for putenv in config.hpp stephen.clamage@… Raffi Enficiaud "File boost/test/utils/runtime/config.hpp at lines 47-49 has {{{ #ifdef __SUNPRO_CC extern int putenv(char *); #endif }}} The immediate problem is that the function is declared as `extern ""C""` on Solaris, which causes a conflict in BOOST components that include . A quick fix would be make this declaration `extern ""C""`, but IMHO that is not the best fix. It addresses the problem only in testing BOOST, not necessarily in using BOOST. Oracle C++ (SUNPRO_CC) compilers support Linux in addition to Solaris, and follow the C++ standard regarding standard headers. Only declarations that are part of standard C or C++ appear in the headers. Additional declarations appear in the headers, depending on the platform, since most platforms specify additional declarations for the C headers. For the case in point, does not contain a declaration for putenv, but does, because POSIX specifies putenv as part . My guess is that some BOOST component(s) included and expected to find putenv there -- a non-portable assumption. Somebody tried to fix the problem by adding a declaration to config.hpp, but got the declaration wrong. I recommend removing this hack from config.hpp, and fixing any tests that fail by including instead of . That is, if you want a POSIX function, you should include a POSIX header. After removing the lines, the only failure I have found in BOOST 1.49 is libs/test/src/unit_test_parameters.cpp" Bugs closed Boost 1.59.0 test Boost 1.49.0 Problem fixed