Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 05/11/2009 18:24:01
- roya
- Membre
Compilation PostgreSQL 8.3.8 sous AIX : erreur sur lseek64
Bonjour,
J'essaye de compiler PostgreSQL 8.3.8 sous AIX 5.3 TL9 (64 bits).
L'exécution du script ".configure" s'est finie sans erreur ni warning mais le "gmake" échoue.
Voici les erreurs que j'ai :
In file included from psqlscan.c:2385:
/usr/include/unistd.h:171: error: conflicting types for 'lseek64'
/usr/include/unistd.h:169: error: previous declaration of 'lseek64' was here
In file included from /usr/include/unistd.h:744,
from psqlscan.c:2385:
/usr/include/sys/lockf.h:64: error: conflicting types for 'lockf64'
/usr/include/sys/lockf.h:62: error: previous declaration of 'lockf64' was here
In file included from psqlscan.c:2385:
/usr/include/unistd.h:807: error: conflicting types for 'ftruncate64'
/usr/include/unistd.h:805: error: previous declaration of 'ftruncate64' was here
/usr/include/unistd.h:843: error: conflicting types for 'truncate64'
/usr/include/unistd.h:841: error: previous declaration of 'truncate64' was here
/usr/include/unistd.h:860: error: conflicting types for 'pread64'
/usr/include/unistd.h:857: error: previous declaration of 'pread64' was here
/usr/include/unistd.h:861: error: conflicting types for 'pwrite64'
/usr/include/unistd.h:858: error: previous declaration of 'pwrite64' was here
/usr/include/unistd.h:928: error: conflicting types for 'fclear64'
/usr/include/unistd.h:925: error: previous declaration of 'fclear64' was here
/usr/include/unistd.h:929: error: conflicting types for 'fsync_range64'
/usr/include/unistd.h:926: error: previous declaration of 'fsync_range64' was here
gmake[3]: *** [psqlscan.o] Error 1
gmake[3]: Leaving directory `/home/PostgreSQL_8.3.8/sources/postgresql-8.3.8/src/bin/psql'
gmake[2]: *** [all] Error 2
gmake[2]: Leaving directory `/home/PostgreSQL_8.3.8/sources/postgresql-8.3.8/src/bin'
gmake[1]: *** [all] Error 2
gmake[1]: Leaving directory `/home/PostgreSQL_8.3.8/sources/postgresql-8.3.8/src'
gmake: *** [all] Error 2
En cherchant sur les forums PostgreSQL, je suis tombée sur ce post :
http://forums.postgresql.fr/viewtopic.php?id=421
dans lequel le contournement trouvé consiste à utiliser l'option "-disable-largefile".
L'explication donnée est la suivante :
Il s'agit du support d'adressage de fichiers 64 bits si c'est disponible sur votre système.
Ainsi PostgreSQL pourrait lire et écrire des fichiers de plus de 2 Go.
Aucun intérêt à priori, sauf pour les fichiers de traces. Autrement dit, vraiment aucun intérêt.
Pouvez-vous svp me donner plus d'explications sur cette erreur ?
Je ne comprends pas pourquoi PostgreSQL essayerait de compiler la partie concernant le support d'adressage de fichiers 64 bits si au final il ne l'utilise pas.
Merci pour votre aide.
Cordialement,
Alexandra
Hors ligne
#2 09/11/2009 10:22:25
- roya
- Membre
Re : Compilation PostgreSQL 8.3.8 sous AIX : erreur sur lseek64
Personne n'a eu à compiler PostgreSQL 8.3.8 sous AIX 5.3 ?
Hors ligne
#3 09/11/2009 10:43:47
- Marc Cousin
- Membre
Re : Compilation PostgreSQL 8.3.8 sous AIX : erreur sur lseek64
Bonjour,
As tu essayé d'appliquer ce qui est écrit ici (c'est nouveau dans la doc de la 8.4, mais est applicable à la 8.3)
http://docs.postgresql.fr/8.4/installat … notes.html
Je ne peux pas t'aider davantage, je n'ai pas d'AIX sous la main pour tester, comme la plupart des gens ici je pense.
Dernière modification par Marc Cousin (09/11/2009 10:45:15)
Marc.
Hors ligne
#4 10/11/2009 13:08:38
- roya
- Membre
Re : Compilation PostgreSQL 8.3.8 sous AIX : erreur sur lseek64
Bonjour,
J'ai suivi la doc 8.4 concernant les spécificités de AIX (http://docs.postgresql.fr/8.4/installat … notes.html) et voici un retour de ce que j'ai fait :
1. Compilation 64-bit de PostgreSQL 8.3.8 sous AIX 5.3 TL9 OK en utilisant la suite de commande suivante :
# export OBJECT_MODE="64"
# export CFLAGS="-maix64"
# export LDFLAGS="-maix64 -Wl,-bbigtoc"
# ./configure
# gmake 2>&1 | tee gmake_PGS_8.3.8_v5.log
# gmake install 2>&1 | tee gmake_install_PGS_8.3.8.log
Les tests de regression ont été passés avec succés.
La compilation se fait avec succès.
2. Compilation 32-bit de PostgreSQL 8.3.8 sous AIX 5.3 TL9
Si je tente de compiler en définissant uniquement
# export OBJECT_MODE="32"
# ./configure
# gmake
la compilation échoue toujours sur :
In file included from psqlscan.c:2385:
/usr/include/unistd.h:171: error: conflicting types for 'lseek64'
/usr/include/unistd.h:169: error: previous declaration of 'lseek64'
was here
In file included from /usr/include/unistd.h:744,
from psqlscan.c:2385:
/usr/include/sys/lockf.h:64: error: conflicting types for 'lockf64'
/usr/include/sys/lockf.h:62: error: previous declaration of
'lockf64' was here
Si je suis le post du forum http://www.developpez.net/forums/d81671 … -unix-aix/
et que je spécifie :
# export OBJECT_MODE="32"
et l'option "-disable-largefiles" à "configure", la compilation réussit :
All of PostgreSQL successfully made. Ready to install.
J'ai l'impression que définir OBJECT_MODE à 32 bits n'est pas suffisant pour une compilation 32-bits mais je n'ai pas la réponse exacte...
Avez-vous plus d'infos sur l'option "-disable-largefiles" ?
Merci pour votre retour,
Cordialement,
Alexandra
Hors ligne
#5 10/11/2009 14:40:35
- Marc Cousin
- Membre
Re : Compilation PostgreSQL 8.3.8 sous AIX : erreur sur lseek64
le 'largefile', c'est un artifice dans la librairie C qui permet d'accéder au contenu de fichiers longs (plus de 2 ou 4Go je ne me rappelle plus) sur des plateformes 32 bits. Le problème venant évidemment du fait que sur 32 bits on ne peut coder que 2^32 (ou 31 si l'entier est signé) posititions, soit l'équivalent de 4Go (ou 2). C'est donc nécessaire pour tout programme 32 bits voulant manipuler des fichiers de plus de 2 ou 4Go.
Ce n'est pas le cas de postgres, qui split les fichiers à 1Go. On peut donc désactiver le support du largefile. Par contre je ne sais pas en quoi l'avoir activé pourrait poser problème sur AIX, mais on revient toujours au problème de compétence sur cette plateforme.
Marc.
Hors ligne