Sur une de mes plateformes, lors de la recompilation de programmes C (make all), des erreurs apparaissent sur les programmes DNA4 et DNA8 :
---
--- APC.c --> APC.o
---
cc -D_SIGA_TYPE_MONO -m64 -fPIC -c APC.c
cc -D_SIGA_TYPE_MONO -m64 -fPIC -O -c -o DNA4.o DNA4.c
DNA4.c:334:22: erreur fatale: sqlcpr.h : Aucun fichier ou dossier de ce type
# include <sqlcpr.h>
^
compilation terminée.
make: *** [DNA4.o] Erreur 1
et
DNA8.c:394:22: erreur fatale: sqlcpr.h : Aucun fichier ou dossier de ce type
# include <sqlcpr.h>
^
compilation terminée.
make: *** [DNA8.o] Erreur 1
Il se trouve que le répertoire contient des fichiers source DNA*.c et des DNA*.pc
Ces sources nécessitent une précompilation Oracle.
Pour que le makefile considère en priorité les sources ".pc" il faut donc :
- soit retirer les ".c" (rm)
- soit mettre à jour l'horodatage des ".pc" (touch).
Sans cela c'est une commande de compilation C classique qui est lancée, et les appels Oracle ne sont pas compris.
Exemple :
rm -f DNA4.c
make DNA4.o
---
--- DNA4.pc --> DNA4.o
---
Pro*C/C++: Release 19.0.0.0.0 - Production on Wed Sep 9 14:52:59 2020
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
System default option values taken from: /app/oracle/client/product/19.0.0/client_1/precomp/admin/pcscfg.cfg
cc -D_SIGA_TYPE_MONO -m64 -fPIC -c -I/app/oracle/client/product/19.0.0/client_1/precomp/hdrs -I/app/oracle/client/product/19.0.0/client_1/precomp/public -I/app/oracle/client/product/19.0.0/client_1/precomp/include -I/app/oracle/client/product/19.0.0/client_1/oracore/include -I/app/oracle/client/product/19.0.0/client_1/oracore/public -I/app/oracle/client/product/19.0.0/client_1/oracore/port/include -I/app/oracle/client/product/19.0.0/client_1/xdk/include -I/app/oracle/client/product/19.0.0/client_1/xdk/public -I/app/oracle/client/product/19.0.0/client_1/nlsrtl/include -I/app/oracle/client/product/19.0.0/client_1/ldap/public/sslinc -I/app/oracle/client/product/19.0.0/client_1/ldap/include/sslinc -I/app/oracle/client/product/19.0.0/client_1/ldap/include/cryptoinc -I/app/oracle/client/product/19.0.0/client_1/slax/include -I. DNA4.c
ls -lrt DNA4*
18536 2016-12-15 15:37 DNA4.pc
0 2020-09-09 14:52 DNA4.lis
35270 2020-09-09 14:52 DNA4.c
18608 2020-09-09 14:52 DNA4.o
Une autre option est de préciser explicitement dans le $SIGACS/adm/src/Makefile la règle de compilation pour ces programmes. Ajouter alors (avant la règle ".pc.o: $(*).pc") deux chapitres sur le modèle de celui indiquant la règle ".pc.o: $(*).pc".
Dans mon cas :
#----------------------------------------------------------------
# Build the object module DNA4.o
#
DNA4.o: DNA4.pc
@echo "--- "
@echo "--- DNA4.pc --> DNA4.o "
@echo "--- "
@$(PROC) $(PCCFLAGS) iname=DNA4.pc oname=DNA4.c
$(CC) -c $(DEFINE_PROC) $(INCLUDE) DNA4.c
#----------------------------------------------------------------
# Build the object module DNA8.o
#
DNA8.o: DNA8.pc
@echo "--- "
@echo "--- DNA8.pc --> DNA8.o "
@echo "--- "
@$(PROC) $(PCCFLAGS) iname=DNA8.pc oname=DNA8.c
$(CC) -c $(DEFINE_PROC) $(INCLUDE) DNA8.c
Aucun commentaire:
Enregistrer un commentaire