Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Interfaces de programmation
Interfaces de programmation Forum d'entraide sur l'utilisation des API Oracle : Pré-compilateurs, OCI, OCCI, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/11/2007, 17h51   #1
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 63
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 63
Points : 39
Points : 39
Par défaut [PRO*C] oracle 10g et machine AIX

salut

J'ai un ensemble de modules Pro$C qui compile et tourne correctement en oracle v9.
Je dois aujourd'hui les recompiler pour Oracle V10 sur une machine AIX en 64bits (d'ailleurs, je crois que je n'ai pas le choix sur ce dernier aspect).

J'arrive à produire les modules.o ( cela ne s'est pas fait sans mal )
J'en arrive à l'édition de lien et alors la ...
L'erreur que j'obtiens est la suivante :
Citation:
/opt/oracle/ora1020/bin/oraxlc -o loadcaly traite_ceno.o traite_cdel.o traite_cesl.o traite_cfal.o traite_nbto.o messages.o main.o oraproc.o verif_env.o load_file.o -L/opt/oracle/ora1020/lib32/ -lclntsh -lld -lm `cat /opt/oracle/ora1020/lib32/sysliblist` -lm -lc_r -lpthreads
ld: 0706-006 Cannot find or open library file: -l clntsh
ld:open(): No such file or directory
make: The error code from the last command is 255.
bon pas de panique, je tente d'aller plus loin, je supprime l'option de librairie clntsh et je lance alors la chaine de compilation suivante :

Citation:
/opt/oracle/ora1020/bin/oraxlc -o loadcaly traite_ceno.o traite_cdel.o traite_cesl.o traite_cfal.o traite_nbto.o messages.o main.o oraproc.o verif_env.o load_file.o -L/opt/oracle/ora1020/lib32/ -lld -lm `cat /opt/oracle/ora1020/lib32/sysliblist` -lm -lc_r -lpthreads
ld: 0711-738 ERROR: Input file /lib/crt0.o:
XCOFF32 object files are not allowed in 64-bit mode.
noter que tout à été compilé avec la variable d'environnement MODE_OBJET=64

si je relance la dernière compilation sans l'option -b64, alors j'ai le message inverse
Citation:
XCOFF64 object files are not allowed in 32-bit mode.
je veux bien tente la moyenne , mais l'option -b48 ne marche pas.....

et alors qu'est ce que je fais moi après une telle expérience ?
comment résoudre le pb de la lib clntsh, puis le pb de 32/64 bits ?
Merci de votre aide
olive-andre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 18h53   #2
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
en post-install, vous avez bien joué le genclntst ?

que vaut $LD_LIBRARY_PATH ?

pourquoi en OBJECT_MODE=64 vous faites références à des trucs sous $ORACLE_HOME/lib32 ?
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 12h17   #3
Candidat au titre de Membre du Club
 
Inscription : août 2004
Messages : 30
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 30
Points : 13
Points : 13
Salut,

Je te propose les 2 makefile que j'utilise ...

Sous AIX c'est LIBPATH qui est utilise et non LD_LIBRARY_PATH il me semble ... Et peut etre meme LIBPATH64, ou LIBPATH_64.
Enfin moi ca marche avec LIBPATH.

J'ai un makefile pour le .pc et un pour le .c (mais tu peux les merger) ...
La commande pour generer le binaire est: make -f Makefilepc; make
Qui genere un binaire "myprocc".

Le fichier Makefile
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
CC=/usr/LOCAL/gcc-3.3.3/bin/gcc
CFLAGS=-maix64 -D_LP64  -D__AIX__ -gxcoff -W -Wall -Wpointer-arith -Wshadow -Wcast-qual -Wcast-align -Winline -Wmissing-prototypes -Wstrict-prototypes -Wimplicit
IFLAGS=-I/usr/include -I$(ORACLE_HOME)/precomp/public/
 
LIBORACLE=$(ORACLE_HOME)/lib
LDFLAGS=-L$(LIBORACLE) -lclntsh -maix64
 
# Sources files
SRCS_C:=$(wildcard *.c)
 
# Object files
OBJS:=$(SRCS_C:%.c=%.o)
 
# Exe
EXE=myprocc
 
# Rules for converting .c -> .o
.SUFFIXES: .c .o
 
.c.o:
	$(CC) $(CFLAGS) -c $*.c
 
# Target myprocc
myprocc: $(OBJS)
	$(CC) -maix64 -o $(EXE) $(OBJS) $(LDFLAGS)
 
clean:
	rm *.o;rm *.c
Le fichier Makefilepc
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
PROC=proc
 
SQLCHECKFLAG=SYNTAX
 
# proc compiler variables
PROCFLAGS= CODE=ANSI_C SQLCHECK=$(SQLCHECKFLAG)           \
INCLUDE=/usr/include
 
# Sources files
SRCS_PC:=$(wildcard *.pc)
 
# Object files
OBJS:=$(SRCS_PC:%.pc=%.c)
 
# Rules for converting .pc -> .c
.SUFFIXES: .pc .c
 
.pc.c:
	$(PROC) $(PROCFLAGS) iname=$* oname=$*.c
 
# Target build
build: $(OBJS)
Attendu que tu es proc dans ton PATH ...

Voila, il faut peut etre un adapter mais ce marche dans mon environement.

a+
jr
jrman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 18h08   #4
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 63
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 63
Points : 39
Points : 39
Par défaut beeeeen...

juste une remarque ... je ne bosse pas avec gcc
J'ai un compilateur installé, c'est le compilateur c d'IBM

* Licensed Materials - Property of IBM.
* IBM XL C Enterprise Edition V8.0 for AIX
* (5724-M11)
* IBM XL C/C++ Enterprise Edition V8.0 for AIX
* (5724-M12)
* (C) Copyright IBM Corp. 1991, 2005.


Les options que tu me décris sont radicalement différentes de celles de mon compilateur, je n'en ai même pas trouvé 2 qui se ressemblaient
je vais faire se focaliser noter équipe d'infra sur l'install de clntsh d'abord, on verra la suite après
Merci
olive-andre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 18h18   #5
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
Citation:
Envoyé par LeoAnderson Voir le message
en post-install, vous avez bien joué le genclntst ?

que vaut $LD_LIBRARY_PATH ?

pourquoi en OBJECT_MODE=64 vous faites références à des trucs sous $ORACLE_HOME/lib32 ?
LD_LIBRARY_PATH ou LIBPATH !

[edit]
d'ailleurs, XL C et XL C/C++ sont les seuls compilos certifiés sous AIX !
[/edit]
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 09h08   #6
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 63
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 63
Points : 39
Points : 39
Code :
1
2
 
LD_LIBRARY_PATH =  /usr/LOCAL/lib:/usr/lib:/lib

pour en revenir à la variable BASE_OBJET=64, j'ai trouvé sur un autre forum, que celle-ci pourrait être la source de mes pb, en vain...
que je compile avec ou sans cette balise ne change rien à l'affaire
olive-andre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 09h55   #7
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
wouh-ouh... et les autres questions ?

et puis, ensuite, essayez de rajouter $ORACLE_HOME/lib dans LD_LIBRARY_PATH et LIBPATH, soyons fous !
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 10h21   #8
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 63
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 63
Points : 39
Points : 39
Les autres questions ? toujours pas de réponse des adm Oracle, y sont dans le sud, alors ...
p'têt que si je lance un avis de recherche sur la plage ?...

comment je peux savoir si le genclntst à été lancé ? y a t'il des fichiers particuliers que je dois trouver ( clntsh.? par ex ?)

Bon, j'ai essayé d'ajouter $ORACLE_HOME/lib dans le LD_LIBRARY_PATH chou blanc !
j'ai essayé avec $ORACLE_HOME/lib32 (quitte à être fou, autant que ce soit vrai ) et bien, cela ne change rien

Oliv.
olive-andre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 11h43   #9
Candidat au titre de Membre du Club
 
Inscription : août 2004
Messages : 30
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 30
Points : 13
Points : 13
Salut,

Oui je reconnais qu'on est en gcc meme si effectivement il est pas certifie. C'est pour des raisons historiques car a l'epoque le compilo AIX ne permettait pas de compiler certaines parties obscures de notre code ...
Mais pour la partie proc ca devrait marcher ...

Ensuite, et bien fait comme nous, installe gcc

Bon courage,
jrman
jrman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 12h22   #10
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 63
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 63
Points : 39
Points : 39
Par défaut yeeeeessssss !


Ca y est ca marche, ca compile
Je n'avais pas de droit en read sur la fameuse librairie libclntsh
finalement, en mettant l'option -q64 et en tapant dans les répertoires de lib/
c'est ok

reste à tester si il fonctionne toujours aussi bien...

Merci de votre aide à tous !
olive-andre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h05.


 
 
 
 
Partenaires

Hébergement Web