All MySQL programs compile cleanly for us with no warnings on Solaris or Linux using gcc. On other systems, warnings may occur due to differences in system include files. See Section 2.10.5, “MIT-pthreads Notes”, for warnings that may occur when using MIT-pthreads. For other problems, check the following list.
The solution to many problems involves reconfiguring. If you do need to reconfigure, take note of the following:
            If configure is run after it has
            previously been run, it may use information that was
            gathered during its previous invocation. This information is
            stored in config.cache. When
            configure starts up, it looks for that
            file and reads its contents if it exists, on the assumption
            that the information is still correct. That assumption is
            invalid when you reconfigure.
          
Each time you run configure, you must run make again to recompile. However, you may want to remove old object files from previous builds first because they were compiled using different configuration options.
To prevent old configuration information or object files from being used, run these commands before re-running configure:
shell>rm config.cacheshell>make clean
Alternatively, you can run make distclean.
The following list describes some of the problems when compiling MySQL that have been found to occur most often:
            If you get errors such as the ones shown here when compiling
            sql_yacc.cc, you probably have run out
            of memory or swap space:
          
Internal compiler error: program cc1plus got fatal signal 11 Out of virtual memory Virtual memory exhausted
            The problem is that gcc requires a huge
            amount of memory to compile sql_yacc.cc
            with inline functions. Try running
            configure with the
            --with-low-memory option:
          
shell> ./configure --with-low-memory
            This option causes -fno-inline to be added
            to the compile line if you are using gcc
            and -O0 if you are using something else.
            You should try the
            --with-low-memory option
            even if you have so much memory and swap space that you
            think you can't possibly have run out. This problem has been
            observed to occur even on systems with generous hardware
            configurations, and the
            --with-low-memory option
            usually fixes it.
          
            By default, configure picks
            c++ as the compiler name and GNU
            c++ links with -lg++. If
            you are using gcc, that behavior can
            cause problems during configuration such as this:
          
configure: error: installation or configuration problem: C++ compiler cannot create executables.
            You might also observe problems during compilation related
            to g++, libg++, or
            libstdc++.
          
            One cause of these problems is that you may not have
            g++, or you may have
            g++ but not libg++, or
            libstdc++. Take a look at the
            config.log file. It should contain the
            exact reason why your C++ compiler didn't work. To work
            around these problems, you can use gcc as
            your C++ compiler. Try setting the environment variable
            CXX to "gcc -O3". For
            example:
          
shell> CXX="gcc -O3" ./configure
            This works because gcc compiles C++
            source files as well as g++ does, but
            does not link in libg++ or
            libstdc++ by default.
          
            Another way to fix these problems is to install
            g++, libg++, and
            libstdc++. However, do not use
            libg++ or libstdc++
            with MySQL because this only increases the binary size of
            mysqld without providing any benefits.
            Some versions of these libraries have also caused strange
            problems for MySQL users in the past.
          
If your compile fails with errors such as any of the following, you must upgrade your version of make to GNU make:
making all in mit-pthreads make: Fatal error in reader: Makefile, line 18: Badly formed macro assignment
Or:
make: file `Makefile' line 18: Must be a separator (:
Or:
pthread.h: No such file or directory
Solaris and FreeBSD are known to have troublesome make programs.
GNU make 3.75 is known to work.
            
            
            
            
            
            
            
            
            If you want to define flags to be used by your C or C++
            compilers, do so by adding the flags to the
            CFLAGS and CXXFLAGS
            environment variables. You can also specify the compiler
            names this way using CC and
            CXX. For example:
          
shell>CC=gccshell>CFLAGS=-O3shell>CXX=gccshell>CXXFLAGS=-O3shell>export CC CFLAGS CXX CXXFLAGS
See Section 2.1.2.4, “MySQL Binaries Compiled by Sun Microsystems, Inc.”, for a list of flag definitions that have been found to be useful on various systems.
            If you get errors such as those shown here when compiling
            mysqld, configure did
            not correctly detect the type of the last argument to
            accept(),
            getsockname(), or
            getpeername():
          
cxx: Error: mysqld.cc, line 645: In this statement, the referenced
     type of the pointer value ''length'' is ''unsigned long'',
     which is not compatible with ''int''.
new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);
            To fix this, edit the config.h file
            (which is generated by configure). Look
            for these lines:
          
/* Define as the base type of the last arg to accept */ #define SOCKET_SIZE_TYPE XXX
            Change XXX to size_t
            or int, depending on your operating
            system. (You must do this each time you run
            configure because
            configure regenerates
            config.h.)
          
            The sql_yacc.cc file is generated from
            sql_yacc.yy. Normally, the build
            process does not need to create
            sql_yacc.cc because MySQL comes with a
            pre-generated copy. However, if you do need to re-create it,
            you might encounter this error:
          
"sql_yacc.yy", line xxx fatal: default action causes potential...
This is a sign that your version of yacc is deficient. You probably need to install bison (the GNU version of yacc) and use that instead.
            On Debian Linux 3.0, you need to install
            gawk instead of the default
            mawk.
          
            If you need to debug mysqld or a MySQL
            client, run configure with the
            --with-debug option, and
            then recompile and link your clients with the new client
            library. See
            MySQL
            Internals: Porting.
          
If you get a compilation error on Linux (for example, SuSE Linux 8.1 or Red Hat Linux 7.3) similar to the following one, you probably do not have g++ installed:
libmysql.c:1329: warning: passing arg 5 of `gethostbyname_r' from incompatible pointer type libmysql.c:1329: too few arguments to function `gethostbyname_r' libmysql.c:1329: warning: assignment makes pointer from integer without a cast make[2]: *** [libmysql.lo] Error 1
By default, the configure script attempts to determine the correct number of arguments by using g++ (the GNU C++ compiler). This test yields incorrect results if g++ is not installed. There are two ways to work around this problem:
                Make sure that the GNU C++ g++ is
                installed. On some Linux distributions, the required
                package is called gpp; on others, it
                is named gcc-c++.
              
                Use gcc as your C++ compiler by
                setting the CXX environment variable
                to gcc:
              
export CXX="gcc"
You must run configure again after making either of those changes.


User Comments
Add your own comment.