J'ai des difficultés à créer quelques bibliothèques Autotool sur Fedora 26, x86_64. La version 64 bits de Fedora place les bibliothèques tierces et fournisseurs dans /usr/local/lib64
. Ubuntu 17 utilise /usr/local/lib
pour que les mêmes projets soient construits correctement.config.site pour les librairies fournisseur sur Fedora x86_64
J'ai utilisé --libdir=/usr/local/lib64
mais trois bibliothèques y résistent. Je n'ai pas de config.site
pour /usr/local
alors j'essaie d'en ajouter un. Le Autoconf manual sur Site Defaults est un peu confus pour moi quand il traite usr/local
config.site
. Il dit:
[discussion de
/usr
version deconfg.site
] ...De même, sur les plates-formes où les bibliothèques 64 bits sont compilés par défaut, puis installé dans/usr/local/lib64 au lieu de/usr/local/lib, il est approprié pour installer /usr/local/share/config.site:
# /usr/local/share/config.site for platforms that prefer # the directory /usr/local/lib64 over /usr/local/lib. test "$libdir" = '${exec_prefix}/lib' && libdir='${exec_prefix}/lib64'
le problème que j'ai est, est la modification ci-dessus joint au /usr/local
version de config.site
? Ou remplace-t-il un bloc de code existant? Ou puis-je simplement le copier où il appartient sans modification?
Ou peut-être, à quoi ressemble un chat de /usr/local/share/config.site
?
Voici le config.site
pour /usr
. Ce n'est pas clair pour moi si cela doit être modifié ou comment le modifier.
$ cat /usr/share/config.site
# This is the config.site file to satisfy FHS defaults when installing below
# /usr.
#
# You may override this file by your config.site using the CONFIG_SITE env
# variable.
#
# Note: This file includes also RHEL/Fedora fix for installing libraries into
# "/lib/lib64" on 64bit systems.
if test -n "$host"; then
# skip when cross-compiling
return 0
fi
if test "$prefix" = /usr \
|| { test "$prefix" = NONE && test "$ac_default_prefix" = /usr ; }
then
test "$sysconfdir" = '${prefix}/etc' && sysconfdir=/etc
test "$sharedstatedir" = '${prefix}/com' && sharedstatedir=/var
test "$localstatedir" = '${prefix}/var' && localstatedir=/var
ARCH=`uname -m`
for i in x86_64 ppc64 s390x aarch64; do
if test $ARCH = $i; then
test "$libdir" = '${exec_prefix}/lib' && libdir='${exec_prefix}/lib64'
break
fi
done
fi
J'ai commencé à écrire une réponse à la question posée, mais je pense que ce serait une perte de temps. Si la spécification explicite de l'option '--libdir' ne permet pas à vos bibliothèques d'aller là où vous les voulez, il semble peu probable que l'ajout ou la modification de paramètres par défaut fasse l'affaire.Le but des valeurs par défaut est en grande partie de vous éviter de devoir spécifier les emplacements d'installation à la main, mais vous l'avez déjà dépassé. –
Je recommande de regarder le Makefile.am (en supposant que Automake est en jeu) qui dirige la construction des bibliothèques impliquées. Il ne devrait pas être trop difficile de le modifier pour honorer la libdir que vous spécifiez. Examinez toutefois s'il peut être utile de ne pas le faire déjà. –
Merci @John. J'ai rassemblé plus d'informations. Voici un fichier de spécifications Fedora pour l'un des programmes. Notez l'utilisation de 'sed' pour patcher'% {_ libdir} 'dans [' gnutls.spec'] (http://pkgs.fedoraproject.org/cgit/rpms/gnutls.git/tree/gnutls.spec). Je suppose que ma prochaine question est, est-ce que GnuTLS fait la bonne chose en définissant 'sys_lib_dlsearch_path_spec' en premier lieu? Il semble que Autotools/Autoconf devrait piloter tout le processus. Autrement dit, le "sys_lib_dlsearch_path_spec" ne doit pas être utilisé et '% {libdir}' devrait être utilisé tout le temps. – jww