On Wed, Sep 18, 2013 at 03:29:19PM -0500, Troy Dawson wrote: > What is a good way to track down a solution to "error: reference to > 'uint32_t' is ambiguous"? Sorry for the multiple mails but after looking at the source I think I see the actual problem. So in e.g. ext/common/Utils/MessageIO.h we have: #include <boost/cstdint.hpp> ... using namespace std; using namespace boost; ... use uint32_t <- error: reference to 'uint32_t' is ambiguous The bundled boost cstdint header is including stdint.h on systems that have it. So ::uint32_t is provided by that. Additionally it emits typedefs for the stdint types in the boost namespace with a declaration conflicting with glibc's. As the passenger code is importing the boost namespace 'uint32_t' could refer to ::uint32_t (from stdint.h included through boost) or boost::uint32_t. That's what leads to the error. Looking at our system boost cstdint.hpp it is doing something smarter. Instead of coming up with its own uint32_t it's just referring to the one from stdint.h (by means of a using ::uint32_t; declaration), so it can't ever conflict. After looking at the passenger-bundled boost header (instead of only cpp's output) its intention seems to be the same but it's broken. Our boost RPM carries a patch that fixes it. Ah, the joys of bundled libraries. ;-) http://pkgs.fedoraproject.org/cgit/boost.git/tree/boost-1.54.0-__GLIBC_HAVE_LONG_LONG.patch You could apply that patch to the bundled boost copy to fix the issue. Another way would be to just delete the bundled ext/boost/cstdint.hpp file in %prep and let it pick up the system cstdint.hpp. You'd obviously have to buildrequire: boost-devel for that. Hope that helps, Lars -- devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/devel Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct