Problem compiling mysql 4.1.11 on AIX 5.1
From: Jon (earlej_at_hotmail.com)
Date: 05/10/05
- Next message: No Body: "Re: JFS2 file corruption"
- Previous message: Frank Fegert: "Re: format/wipe rootvg disks on MCA-machines"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Tue, 10 May 2005 16:14:46 -0400
Hi all!
I'm having trouble building the latest stable release (4.1.11) of MySQL on
AIX 5.1. Hope you can offer some assistance to get this running. Apologies
for the longish post.. I tried to be thorough, yet concise in my message
snips.
My environment is as follows:
Relevant GNU tools:
autoconf-2.58-1.aix5.1.noarch.rpm
automake-1.7.9-1.aix5.1.noarch.rpm
binutils-2.14-3.aix5.1.ppc.rpm
bison-1.875-2.aix5.1.ppc.rpm
flex-2.5.4a-6.aix4.3.ppc.rpm
gcc-3.3.2-4.aix5.1.ppc.rpm
libtool-1.5-2.aix5.1.ppc.rpm
m4-1.4.1-1.aix5.1.ppc.rpm
make-3.80-1.aix5.1.ppc.rpm
patch-2.5.4-4.aix4.3.ppc.rpm
zlib-1.2.1-2.aix5.1.ppc.rpm
zlib-devel-1.2.1-2.aix5.1.ppc.rpm
PATH=/opt/freeware/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:.
export PATH
Compiler Flags:
CC=gcc
CFLAGS="-mcpu=powerpc64 -Wa,-many -maix64"
CXX=g++
CXXFLAGS="-mcpu=powerpc64 -Wa,-many -maix64 -felide-constructors -fno-except
ions -fno-rtti"
export CC CXX CFLAGS CXXFLAGS
MySQL configure directives:
./configure \
--prefix=/usr2/tools/mysql.tst \
--with-big-tables \
--with-low-memory \
--enable-assembler \
--with-vio \
--with-openssl \
--with-openssl-includes=/usr2/tools/openssl/include \
--with-openssl-libs=/usr2/tools/openssl/lib \
--without-extra-tools \
--without-docs \
--without-bench \
--enable-local-infile
This results in the following error being tossed at me during the configure
process:
...
checking term.h usability... no
checking term.h presence... yes
configure: WARNING: term.h: present but cannot be compiled
configure: WARNING: term.h: check for missing prerequisite headers?
configure: WARNING: term.h: see the Autoconf documentation
configure: WARNING: term.h: section "Present But Cannot Be Compiled"
configure: WARNING: term.h: proceeding with the preprocessor's result
configure: WARNING: term.h: in the future, the compiler will take precedence
configure: WARNING: ## ------------------------------------------ ##
configure: WARNING: ## Report this to the AC_PACKAGE_NAME lists. ##
configure: WARNING: ## ------------------------------------------ ##
checking for term.h... yes
...
and config.log has this to say on that:
...
configure:22525: checking term.h usability
configure:22537: gcc -c -mcpu=powerpc -Wa,-many conftest.c >&5
In file included from conftest.c:90:
/usr/include/term.h:1194: error: parse error before "bool"
/usr/include/term.h:1225: error: parse error before "SGTTY"
/usr/include/term.h:1242: error: parse error before "sgr_mode"
/usr/include/term.h:1243: error: parse error before "sgr_faked"
/usr/include/term.h:1254: error: parse error before "funckeystarter"
/usr/include/term.h:1255: error: parse error before "_fl_rawmode"
/usr/include/term.h:1265: error: parse error before '*' token
/usr/include/term.h:1267: error: parse error before "bit_vector"
/usr/include/term.h:1271: error: parse error before "check_turn_off"
/usr/include/term.h:1272: error: parse error before "_cur_pair"
/usr/include/term.h:1273: error: parse error before '*' token
/usr/include/term.h:1276: error: parse error before '}' token
...
If I search for ''bool'' in the include files referenced in the configure
test, I only get:
sys/types.h:typedef int boolean_t;
Type bool does appear to be defined in curses.h, which is not used in the
term.h test. That's the only error I traced... there might be other,
similar situations.
Moving along, I issue forth the venerable make command, which cops out thus:
...
if gcc -DUNDEF_THREADS_HACK -DHAVE_CONFIG_H -DNO_KILL_INTR -I. -I. -I../..
-I../../include -I./../.. -I.. -O3 -DDBUG_OFF -mcpu=powerpc -Wa,-many
-MT term.o -MD -MP -MF ".deps/term.Tpo" -c -o term.o term.c; \
then mv -f ".deps/term.Tpo" ".deps/term.Po"; else rm -f ".deps/term.Tpo";
exit 1; fi
In file included from
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.1.0.0/3.3.2/include/curses.h:136,
from term.c:62:
/usr/include/term.h:1351: error: conflicting types for `tgetstr'
/usr/local/include/termcap.h:27: error: previous declaration of `tgetstr'
/usr/include/term.h:1355: error: conflicting types for `tgetflag'
/usr/local/include/termcap.h:26: error: previous declaration of `tgetflag'
/usr/include/term.h:1355: error: conflicting types for `tgetnum'
/usr/local/include/termcap.h:25: error: previous declaration of `tgetnum'
/usr/include/term.h:1357: error: conflicting types for `tputs'
/usr/local/include/termcap.h:31: error: previous declaration of `tputs'
term.c: In function `term_set':
term.c:941: warning: passing arg 1 of `tgetstr' discards qualifiers from
pointer target type
term.c: In function `term_echotc':
term.c:1445: warning: passing arg 1 of `tgetstr' discards qualifiers from
pointer target type
make[3]: *** [term.o] Error 1
make[3]: Leaving directory
`/usr1/acct/jonathan/ostk/build/mysql-4.1.11/cmd-line-utils/libedit'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory
`/usr1/acct/jonathan/ostk/build/mysql-4.1.11/cmd-line-utils'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr1/acct/jonathan/ostk/build/mysql-4.1.11'
make: *** [all] Error 2
In config.h, HAVE_CURSES_H, HAVE_TERMCAP_H and HAVE_TERM_H are all defined
and set to 1.
I tried removing HAVE_TERM_H, but curses.h just includes it anyway.
If I #undef HAVE_TERMCAP_H and rerun make, it then stops at:
...
gcc: installation problem, cannot exec `cc1plus': No such file or directory
make[2]: *** [my_new.o] Error 1
make[2]: Leaving directory
`/usr1/acct/jonathan/ostk/build/mysql-4.1.11/mysys'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr1/acct/jonathan/ostk/build/mysql-4.1.11'
make: *** [all] Error 2
Note: It also throws a lot of
...
../include/my_global.h:735: warning: redefinition of `int8'
/usr/include/sys/inttypes.h:631: warning: `int8' previously declared here
../include/my_global.h:736: warning: redefinition of `int16'
/usr/include/sys/inttypes.h:632: warning: `int16' previously declared here
../include/my_global.h:746: warning: redefinition of `int32'
/usr/include/sys/inttypes.h:633: warning: `int32' previously declared here
...
at me during the make process at all times during this build.
I then did a make distclean, changed CXX from gcc to g++, re-ran configure
and make. This time I got as far as a link stage (I think...), where I got
a rash of assembler messages:
...
make[3]: Entering directory `/usr1/acct/jonathan/mysql-4.1.11/sql'
Making all in share
make[4]: Entering directory `/usr1/acct/jonathan/mysql-4.1.11/sql/share'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/usr1/acct/jonathan/mysql-4.1.11/sql/share'
make[4]: Entering directory `/usr1/acct/jonathan/mysql-4.1.11/sql'
g++ -DMYSQL_SERVER -DDEFAULT_MYSQL_HOME="\"/usr2/tools/mysql.tst\"" -DDATADI
R="\"/usr2/tools/mysql.tst/var\"" -DSHAREDIR="\"/usr2/tools/mysql.tst/share/
mysql\"" -DHAVE_CONFIG_H -I. -I. -I.. -I../innobase/include -I../include -I.
./regex -I. -I/usr2/tools/openssl/include -O3 -DDBUG_OFF -mcpu=powerpc64
-Wa,-many -maix64 -felide-constructors -fno-exceptions -fno-rtti -c -I../i
nnobase/include -I../include -I../regex -I. -I/usr2/tools/openssl/include -D
TZINFO2SQL mysql_tzinfo_to_sql.cc
/tmp//ccpoL2Ge.s: Assembler messages:
/tmp//ccpoL2Ge.s:106: Error: Unrecognized opcode: `std'
/tmp//ccpoL2Ge.s:107: Error: Unrecognized opcode: `std'
/tmp//ccpoL2Ge.s:109: Error: Unrecognized opcode: `std'
/tmp//ccpoL2Ge.s:111: Error: Unrecognized opcode: `stdu'
/tmp//ccpoL2Ge.s:115: Error: Unrecognized opcode: `ld'
/tmp//ccpoL2Ge.s:117: Error: Unrecognized opcode: `ld'
/tmp//ccpoL2Ge.s:120: Error: Unrecognized opcode: `ld'
/tmp//ccpoL2Ge.s:124: Error: Unrecognized opcode: `ld'
/tmp//ccpoL2Ge.s:131: Error: Unrecognized opcode: `ld'
/tmp//ccpoL2Ge.s:141: Error: Unrecognized opcode: `ld'
/tmp//ccpoL2Ge.s:143: Error: Unrecognized opcode: `ld'
/tmp//ccpoL2Ge.s:144: Error: Unrecognized opcode: `rldicr'
...
make[4]: *** [mysql_tzinfo_to_sql.o] Error 1
make[4]: Leaving directory `/usr1/acct/jonathan/mysql-4.1.11/sql'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/usr1/acct/jonathan/mysql-4.1.11/sql'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/usr1/acct/jonathan/mysql-4.1.11/sql'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr1/acct/jonathan/mysql-4.1.11'
make: *** [all] Error 2
It was then suggested to me to try a script call 'fixincludes'. I found the
closest thing, and so tried this (I've since backed out and am back at a
clean GCC install):
cd /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.1.0.0/3.3.2/
mv include inc
cd install-tools
export TARGET_MACHINE=AIX
./fixinc.sh /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.1.0.0/3.3.2/include
>From fixinc.sh, I was getting errors saying that TARGET_MACHINE was not
defined, so I took a stab in the dark and set it to AIX (couldn't find any
docs to suggest anything else...) It seemed to run to completion after
that.
During configure, I received many errors of the form:
...
checking dlfcn.h usability... no
checking dlfcn.h presence... yes
configure: WARNING: dlfcn.h: present but cannot be compiled
configure: WARNING: dlfcn.h: check for missing prerequisite headers?
configure: WARNING: dlfcn.h: see the Autoconf documentation
configure: WARNING: dlfcn.h: section "Present But Cannot Be Compiled"
configure: WARNING: dlfcn.h: proceeding with the preprocessor's result
configure: WARNING: dlfcn.h: in the future, the compiler will take
precedence
configure: WARNING: ## ------------------------------------------ ##
configure: WARNING: ## Report this to the AC_PACKAGE_NAME lists. ##
configure: WARNING: ## ------------------------------------------ ##
checking for dlfcn.h... yes
...
The config.log showed (for the above error, similar messages were emitted
for other errors):
...
configure:5338: checking dlfcn.h usability
configure:5350: gcc -c -Wa,-many -maix64 conftest.c >&5
In file included from conftest.c:23:
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.1.0.0/3.3.2/include/stdio.h:268:
error: parse error before "__gnuc_va_list"
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.1.0.0/3.3.2/include/stdio.h:269:
error: parse error before "__gnuc_va_list"
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.1.0.0/3.3.2/include/stdio.h:270:
error: parse error before "__gnuc_va_list"
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.1.0.0/3.3.2/include/stdio.h:272:
error: parse error before "__gnuc_va_list"
In file included from conftest.c:23:
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.1.0.0/3.3.2/include/stdio.h:474:
error: parse error before "__gnuc_va_list"
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.1.0.0/3.3.2/include/stdio.h:475:
error: parse error before "__gnuc_va_list"
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.1.0.0/3.3.2/include/stdio.h:476:
error: parse error before "__gnuc_va_list"
...
The last configure message was:
...
checking for char... no
checking size of char... 0
configure: error: No size for char type.
A likely cause for this could be that there isn't any
static libraries installed. You can verify this by checking if you have
libm.a
in /lib, /usr/lib or some other standard place. If this is the problem,
install the static libraries and try again. If this isn't the problem,
examine config.log for possible errors. If you want to report this, use
'scripts/mysqlbug' and include at least the last 20 rows from config.log!
As I said, I've since backed out of this situation.
As of now, I believe my Qs are:
1. What is the correct usage of curses, term and termcap? Which do I need
(don't they all do the same thing, essentially?)
2. The mysql docs say that using CXX=gcc (to use gcc as a c++ compiler) is
preferable. Why does it seem to fail for me, forcing me to using the true
g++ compiler?
3. What is the next spell I must learn in order to finally realize a gcc
compiled mysql server?
Many thanks!
Jon
- Next message: No Body: "Re: JFS2 file corruption"
- Previous message: Frank Fegert: "Re: format/wipe rootvg disks on MCA-machines"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|