Bug #18653 Problems compiling 5.0.19 on Slackware 10.2 gcc 3.4.6
Submitted: 30 Mar 2006 15:50 Modified: 4 Apr 2006 14:47
Reporter: Jeronimo Barros Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server Severity:S1 (Critical)
Version:5.0.19 OS:Linux (Slackware 10.2 - Kernel 2.6.16.1)
Assigned to: CPU Architecture:Any

[30 Mar 2006 15:50] Jeronimo Barros
Description:
Problems compiling 5.0.19 on Slackware Current (Changelog Sun Mar 26 20:42:28 CST 2006), AMD Athlon, kernel 2.6.16.1 and gcc 3.4.6.

- After make:

In file included from /usr/include/asm/cpufeature.h:10,
                 from /usr/include/asm/processor.h:16,
                 from /usr/include/asm/atomic.h:6,
                 from ../include/my_global.h:318,
                 from mysys_priv.h:17,
                 from my_new.cc:22:
/usr/include/linux/bitops.h: In function `int generic_fls64(__u64)':
/usr/include/linux/bitops.h:84: error: `fls' was not declared in this scope
/usr/include/linux/bitops.h:85: error: `fls' was not declared in this scope
/usr/include/linux/bitops.h: In function `int get_bitmask_order(unsigned int)':
/usr/include/linux/bitops.h:92: error: `fls' was not declared in this scope
/usr/include/linux/bitops.h: In function `int get_count_order(unsigned int)':
/usr/include/linux/bitops.h:100: error: `fls' was not declared in this scope
In file included from /usr/include/asm/atomic.h:6,
                 from ../include/my_global.h:318,
                 from mysys_priv.h:17,
                 from my_new.cc:22:
/usr/include/asm/processor.h: In function `void set_in_cr4(long unsigned int)':
/usr/include/asm/processor.h:239: error: `read_cr4' was not declared in this scope
/usr/include/asm/processor.h:241: error: `write_cr4' was not declared in this scope
/usr/include/asm/processor.h: In function `void clear_in_cr4(long unsigned int)':
/usr/include/asm/processor.h:248: error: `read_cr4' was not declared in this scope
/usr/include/asm/processor.h:250: error: `write_cr4' was not declared in this scope
make[2]: *** [my_new.o] Error 1
make[2]: Leaving directory `/usr/local/src/mysql-5.0.19/mysys'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/mysql-5.0.19'

/usr/include/asm is a link to /usr/src/linux-2.6.16.1/include/asm-i386
/usr/include/linux is a link to /usr/src/linux-2.6.16.1/include/linux

How to repeat:
uname -a
Linux test 2.6.16.1 #1 PREEMPT Wed Mar 29 17:54:43 BRT 2006 i686 athlon-4 i386 GNU/Linux

        tar xvfz mysql-5.0.19.tar.gz
        cd mysql-5.0.19

        groupadd -g 51 mysql
        useradd -c MySQL -d /usr/local/mysql -g mysql -u 51 mysql

        bash

        CFLAGS="-Wimplicit -Wreturn-type -Wid-clash-51 -Wswitch -Wtrigraphs \
        -Wcomment -W -Wchar-subscripts -Wformat -Wimplicit-function-dec \
        -Wimplicit-int -Wparentheses -Wsign-compare -Wwrite-strings -Wunused \
        -O6 -march=i686 -fomit-frame-pointer -mstack-align-double"

        CXX=gcc

        CXXFLAGS="-Wimplicit -Wreturn-type -Wid-clash-51 -Wswitch -Wtrigraphs
        -Wcomment -W -Wchar-subscripts -Wformat -Wimplicit-function-dec \
        -Wimplicit-int -Wparentheses -Wsign-compare -Wwrite-strings \
        -Woverloaded-virtual -Wextern-inline -Wsign-promo -Wreorder \
        -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors \
        -fno-exceptions -fno-rtti -O6 -fomit-frame-pointer -march=i686 \
        -mstack-align-double"

        ./configure --prefix=/usr/local/mysql --enable-assembler \
        --with-extra-charsets=complex --enable-thread-safe-client \
        --with-mysqld-user=mysql --with-innodb --with-berkeley-db \
        --with-embedded-server --enable-thread-safe-client \
        --with-openssl --with-vio --with-big-tables --with-raid \
        --with-ndbcluster

        make

Suggested fix:
The same configuration compile OK in Kernel 2.4.32 with gcc 3.4.6, but I need to use kernel 2.6.

Any tip ? Any help ?

Thanks in advance.
[31 Mar 2006 12:25] Valeriy Kravchuk
Thank you for a problem report. I tried to compile 5.0.21-BK on Linux with 2.6 kernel and GCC 3.3.5, with you exact variabnles and configure command line. I've got errors, but different.

Can you, please, try to not set any environment variables and use simpler configure, like:

./configure --prefix=... --with-extra-charsets=all --with-readline

This one works OK for me on the same machine. Please, try, and inform about hte results.
[4 Apr 2006 12:51] Jeronimo Barros
Hi Valeriy,

I've tried to compile 5.0.19 without environment variables and the problem continues:

./configure --with-extra-charsets=all --with-readline ; make
.
.
In file included from /usr/include/asm/cpufeature.h:10,
                 from /usr/include/asm/processor.h:16,
                 from /usr/include/asm/atomic.h:6,
                 from ../include/my_global.h:318,
                 from mysys_priv.h:17,
                 from my_new.cc:22:
/usr/include/linux/bitops.h: In function `int generic_fls64(__u64)':
/usr/include/linux/bitops.h:84: error: `fls' was not declared in this scope
/usr/include/linux/bitops.h:85: error: `fls' was not declared in this scope
/usr/include/linux/bitops.h: In function `int get_bitmask_order(unsigned int)':
/usr/include/linux/bitops.h:92: error: `fls' was not declared in this scope
/usr/include/linux/bitops.h: In function `int get_count_order(unsigned int)':
/usr/include/linux/bitops.h:100: error: `fls' was not declared in this scope
In file included from /usr/include/asm/atomic.h:6,
                 from ../include/my_global.h:318,
                 from mysys_priv.h:17,
                 from my_new.cc:22:
/usr/include/asm/processor.h: In function `void set_in_cr4(long unsigned int)':
/usr/include/asm/processor.h:239: error: `read_cr4' was not declared in this scope
/usr/include/asm/processor.h:241: error: `write_cr4' was not declared in this scope
/usr/include/asm/processor.h: In function `void clear_in_cr4(long unsigned int)':
/usr/include/asm/processor.h:248: error: `read_cr4' was not declared in this scope
/usr/include/asm/processor.h:250: error: `write_cr4' was not declared in this scope
make[2]: *** [my_new.o] Error 1
make[2]: Leaving directory `/usr/local/src/mysql-5.0.19/mysys'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/mysql-5.0.19'
make: *** [all] Error 2

But I realized that running kernel 2.6.16.1, with /usr/include/linux and /usr/include/asm directories linked to 2.4.32 instead 2.6.1.61.1 kernel directory, 5.0.19 compiles OK with or without environment variables setted.

Thanks again for the help.
[4 Apr 2006 14:47] Valeriy Kravchuk
Sorry for not paying attention to the links. So, it is not a bug.