11 juillet 2006

Compilation de OpenSSL sur HP-UX 11i en PA-RISC 64 bit

Sur une machine équipée d'un PA-RISC 64 bit et du système HP-UX 11i la compilation de la librairie OpenSSL nécéssite quelques modifications de Makefile. Ceci en raison de la non utilisation de libtool comme système de compilation.

Configuration de la compilation

La génération des Makefile pour une compilation sur HP-UX 11i ce fait à l'aide la commande suivante :

./Configure threads shared no-zlib --prefix=/usr/local/libs/openssl-0.9.8b-64   hpux64-parisc2-cc

Dans mon cas, l'installation de la librairie est faite dans un répertoire indépendant et j'ignore la zlib pour éviter de multipilier les dépendances entre librairies.

Compilation en mode 64 bit

Pour lancer une compilation en 64 bit, il est necessaire de redéfinir la variable CFLAG avant de lancer la compilation à l'aide la commande make.

Pour cela on peut tout simplement modifier le fichier Makefile comme ceci :

#  -AVANT-
# CFLAG= +Z -DOPENSSL_PIC -DOPENSSL_THREADS  -DDSO_DLFCN -DHAVE_DLFCN_H +DD64 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT

# -APRES-
CFLAG=-w -O +DS2.0 +DA2.0W -DSO_DL -DOPENSSL_THREADS -D_REENTRANT -DOPENSSL_NO_KRB5  -DB_ENDIAN -DMD32_XARRAY

Problème du chargement dynamique d'OpenSSL dans des librairies tiers

Pour lier des librairies (ou des programmes) tiers avec OpenSSL, il est nécessaire de présicer l'emplacement des fichiers .sl (notamment pour libcrypto.sl) pour cela on peut utiliser la variable SHLIB_PATH ou on peut intégrer le chemin de chaque librairie dynamique dans les binaires.

Avec cette dernière méthode le plus simple est de d'utiliser l'option +compat, malheureusement je n'arrive pas à compiler OpenSSL avec cette option. A défaut, j'ai intégré les chemins un à un. Pour cela, il faut modifier le fichier Makefile.shared, et dans la section link_a.hpux: il faut surcharger la variable SHAREDFLAGS comme ceci :

# -AVANT-
SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-B,symbolic,+vnocompatwarnings,-z,+s,+h,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX";

# -APRES-
SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -Wl,+b/usr/lib/pa20_64/ -Wl,+b$(INSTALLTOP)/lib  -Wl,-B,symbolic,+vnocompatwarnings,-z,+s,+h,$
$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX";

Aucun commentaire:

Enregistrer un commentaire