From: Warren Young Date: December 12 2008 2:04am Subject: Re: I cannot compile MySQL++ 3.0.8 in FreeBSD 5.2.1 with gcc 3.3.3 List-Archive: http://lists.mysql.com/plusplus/8255 Message-Id: <5C7D8225-029C-4599-8B14-BFC38BC4DF84@etr-usa.com> MIME-Version: 1.0 (Apple Message framework v929.2) Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit On Dec 11, 2008, at 4:54 AM, soryu Jeong wrote: > lib/null.h:174: error: `mysqlpp::Null::data' has > incomplete > type > lib/stadapter.h:44: error: forward declaration of `struct > mysqlpp::String' The compiler is wrong to demand access to all the type information at this point. It's possible for it to delay the full template instantiation until the point of use, which is not in stadapter.h. > Is MySQL++ not support FreeBSD 5.2.1 or gcc 3.3.3 ? In the release notes for FreeBSD 5.3, it says they upgraded GCC from a prerelease version of 3.3.3 to a prerelease version of 3.4.2. Why they're shipping beta compilers in an OS that prides itself on stability is beyond me, but, the main point is that this compilation bug may be due to the incompleteness of 3.3.3. We regularly build MySQL++ on older versions of GCC successfully, so this must be a temporary bug. Further scanning of the release notes shows that they didn't upgrade the compiler again during the 5.x series, so I'm guessing their 3.4.2 variant didn't cause any new problems. They began shipping the official 3.4.4 version with FreeBSD 6.0. > what can I do for compile it ? If it were me, I'd try one of these things, in this order of preference: - upgrade to a later 5.x version of FreeBSD -- you probably want this for security reasons anyway - upgrade GCC to one from a newer FreeBSD, since the one you have is clearly broken - appease the compiler, sprinkling #include around the MySQL++ code until the error goes away; start with stadapter.h - build MySQL++ on another machine that generates binary-compatible libraries, copy the library over, and hope this lets you build your program against it successfully - build everything on another machine, and just copy over binaries If you try one of the first two, let us know what you upgraded to that fixed it. We need to document this in the MySQL++ FAQ.