diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-06 00:45:20 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-06 00:45:20 +0000 |
commit | 9a08cbfcc1ef900a04580f35afe2a4592d7d6030 (patch) | |
tree | 004cc7027bca2f2c0bcb5806527c8e0c48df2d6e /man/fr/dpkg-buildflags.man | |
parent | Initial commit. (diff) | |
download | dpkg-9a08cbfcc1ef900a04580f35afe2a4592d7d6030.tar.xz dpkg-9a08cbfcc1ef900a04580f35afe2a4592d7d6030.zip |
Adding upstream version 1.19.8.upstream/1.19.8upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | man/fr/dpkg-buildflags.man | 685 |
1 files changed, 685 insertions, 0 deletions
diff --git a/man/fr/dpkg-buildflags.man b/man/fr/dpkg-buildflags.man new file mode 100644 index 0000000..f25f208 --- /dev/null +++ b/man/fr/dpkg-buildflags.man @@ -0,0 +1,685 @@ +.\" dpkg manual page - dpkg-buildflags(1) +.\" +.\" Copyright © 2010-2011 Raphaël Hertzog <hertzog@debian.org> +.\" Copyright © 2011 Kees Cook <kees@debian.org> +.\" Copyright © 2011-2015 Guillem Jover <guillem@debian.org> +.\" +.\" This is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation; either version 2 of the License, or +.\" (at your option) any later version. +.\" +.\" This is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" You should have received a copy of the GNU General Public License +.\" along with this program. If not, see <https://www.gnu.org/licenses/>. +. +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* +.TH dpkg\-buildflags 1 %RELEASE_DATE% %VERSION% "suite dpkg" +.nh +.SH NOM +dpkg\-buildflags \- Renvoie les options de compilation à utiliser pour la +construction du paquet +. +.SH SYNOPSIS +\fBdpkg\-buildflags\fP [\fIoption\fP...] [\fIcommande\fP] +. +.SH DESCRIPTION +\fBdpkg\-buildflags\fP est un script qui permet de récupérer les options de +compilation à utiliser pour la construction d'un paquet. +. +Les drapeaux par défaut sont définis par le distributeur mais peuvent être +étendus ou remplacés de plusieurs façons\ : +.IP 1. +pour tout le système avec \fB%PKGCONFDIR%/buildflags.conf\fP\ ; +.IP 2. +pour l'utilisateur courant avec \fB$XDG_CONFIG_HOME/dpkg/buildflags.conf\fP où +la valeur par défaut de \fB$XDG_CONFIG_HOME\fP est \fB$HOME/.config\fP\ ; +.IP 3. +temporairement par l'utilisateur avec des variables d'environnement (voir +\fBVARIABLES D'ENVIRONNEMENT\fP)\ ; +.IP 4. +dynamiquement par le responsable du paquet avec des variables +d'environnement à l'aide de \fBdebian/rules\fP (voir \fBVARIABLES +D'ENVIRONNEMENT\fP). +.P +Les fichiers de configuration peuvent contenir quatre types de directives\ : +.TP +\fBSET\fP\fI drapeau valeur\fP +Remplace le drapeau \fIdrapeau\fP par la valeur \fIvaleur\fP. +.TP +\fBSTRIP\fP\fI drapeau valeur\fP +Retire du drapeau \fIdrapeau\fP tous les drapeaux de construction listés dans +\fIvaleur\fP. +.TP +\fBAPPEND\fP\fI drapeau valeur\fP +Étend le drapeau \fIdrapeau\fP avec les options indiquées dans \fIvaleur\fP. Une +espace est ajoutée au début de ce qui est ajouté si la valeur actuelle du +drapeau n'est pas vide. +.TP +\fBPREPEND\fP\fI drapeau valeur\fP +Préfixe le drapeau \fIdrapeau\fP avec les options indiquées dans \fIvaleur\fP. Une +espace est ajoutée au début de ce qui est ajouté si la valeur actuelle du +drapeau n'est pas vide. +.P +Les fichiers de configuration peuvent contenir des commentaires sur les +lignes commençant par un dièse (#). Les lignes vides sont également +ignorées. +.SH COMMANDES +.TP +\fB\-\-dump\fP +Affiche sur la sortie standard tous les drapeaux de compilation et leurs +valeurs. Un drapeau par ligne est affiché, suivi de sa valeur, séparée par +le caractère «\ égal\ » («\ \fIdrapeau\fP=\fIvaleur\fP\ »). Il s'agit de l'action par +défaut. +.TP +\fB\-\-list\fP +Affiche la liste des drapeaux gérés par le distributeur actuel (un par +ligne). Voir la section \fBDRAPEAUX GÉRÉS\fP pour plus d'informations sur +chacun d'eux. +.TP +\fB\-\-status\fP +Affiche toute information utile pour expliquer le comportement de +\fBdpkg\-buildflags\fP (depuis dpkg\ 1.16.5)\ : variables d'environnement, +distributeur actuel, état de tous les drapeaux de fonctionnalités. Affiche +également les drapeaux de compilation résultants ainsi que leur origine. + +Cette option est destinée à être utilisée depuis \fBdebian/rules\fP, afin de +garder dans le journal de construction une trace claire des drapeaux de +compilation utilisés. Cela peut être utile pour diagnostiquer des problèmes +qui y seraient liés. +.TP +\fB\-\-export=\fP\fIformat\fP +Affiche sur la sortie standard les commandes qui permettent d'exporter tous +les drapeaux de compilation pour un outil particulier. Si \fIformat\fP n'est +pas spécifié, sa valeur est \fBsh\fP. Seuls les drapeaux de compilation +commençant par une majuscule sont inclus, les autres étant supposés +inadaptés à l'environnement. Formats pris en charge\ : +.RS +.TP +\fBsh\fP +Commandes shell pour définir et exporter tous les drapeaux de compilation +dans l'environnement. Les valeurs drapeau sont protégées et ainsi la sortie +est prête à être évaluée par un shell. +.TP +\fBcmdline\fP +Arguments à passer à la ligne de commande d'un programme de construction +pour utiliser tous les drapeaux de compilation (depuis dpkg\ 1.17.0). Les +valeurs drapeau sont protégées dans la syntaxe du shell. +.TP +\fBconfigure\fP +C'est un ancien alias pour \fBcmdline\fP. +.TP +\fBmake\fP +Directives de make pour définir et exporter tous les drapeaux de compilation +dans l'environnement. La sortie peut être écrite dans un fragment de +Makefile et évaluée en utilisant une directive \fBinclude\fP. +.RE +.TP +\fB\-\-get\fP\fI drapeau\fP +Affiche la valeur de ce drapeau sur la sortie standard. Retourne un code de +sortie \fB0\fP si le drapeau est connu et \fB1\fP s'il est inconnu. +.TP +\fB\-\-origin\fP\fI drapeau\fP +Affiche l'origine de la valeur renvoyée par \fB\-\-get\fP. Retourne un code de +sortie \fB0\fP si le drapeau est connu et \fB1\fP s'il est inconnu. L'origine est +une des valeurs suivantes\ : +.RS +.TP +\fBvendor\fP +le drapeau défini à l'origine par le distributeur est renvoyé\ ; +.TP +\fBsystem\fP +le drapeau est placé ou modifié par un réglage système\ ; +.TP +\fBuser\fP +le drapeau est placé ou modifié par une configuration spécifique à +l'utilisateur\ ; +.TP +\fBenv\fP +le drapeau est placé ou modifié par une configuration spécifique dans +l'environnement. +.RE +.TP +\fB\-\-query\fP +Affiche toute information utile pour expliquer le comportement du +programme\ : distributeur actuel, variables d'environnement, domaines des +fonctionnalités, état de tous les drapeaux de fonctionnalités. Affiche +également les drapeaux de compilation résultants ainsi que leur origine +(depuis dpkg\ 1.19.0). +.IP +Par exemple\ : +.nf + Vendor: Debian + Environment: + DEB_CFLAGS_SET=\-O0 \-Wall + + Area: qa + Features: + bug=no + canary=no + + Area: reproducible + Features: + timeless=no + + Flag: CFLAGS + Value: \-O0 \-Wall + Origin: env + + Flag: CPPFLAGS + Value: \-D_FORTIFY_SOURCE=2 + Origin: vendor +.fi +.TP +\fB\-\-query\-features\fP\fI domaine\fP +Affiche les fonctionnalités activées pour un domaine donné (depuis +dpkg\ 1.16.2). Les seuls domaines reconnus actuellement sur Debian et ses +dérivés sont \fBfuture\fP, \fBqa\fP, \fBreproducible\fP, \fBsanitize\fP et \fBhardening\fP, +voir la section \fBZONES D'OPTION\fP pour plus de détails. Retourne un code de +sortie \fB0\fP si le domaine est connu et \fB1\fP s'il est inconnu. +.IP +L'affichage est dans le format RFC822, avec une section par +fonctionnalité. Par exemple\ : +.IP +.nf + Feature: pie + Enabled: yes + + Feature: stackprotector + Enabled: yes +.fi +.TP +\fB\-\-help\fP +Affiche un message d'aide puis quitte. +.TP +\fB\-\-version\fP +Affiche le numéro de version puis quitte. +. +.SH "DRAPEAUX GÉRÉS" +.TP +\fBCFLAGS\fP +Options du compilateur\ C. La valeur par défaut définie par le distributeur +comporte \fB\-g\fP et le niveau d'optimisation par défaut (\fB\-O2\fP en général, ou +\fB\-O0\fP si la variable d'environnement \fBDEB_BUILD_OPTIONS\fP contient +\fInoopt\fP). +.TP +\fBCPPFLAGS\fP +Options du préprocesseur\ C. Valeur par défaut\ :\ aucune. +.TP +\fBCXXFLAGS\fP +Options du compilateur\ C++. Analogue à \fBCFLAGS\fP. +.TP +\fBOBJCFLAGS\fP +Options du compilateur Objective\ C. Analogue à \fBCFLAGS\fP. +.TP +\fBOBJCXXFLAGS\fP +Options du compilateur Objective\ C++. Analogue à \fBCXXFLAGS\fP. +.TP +\fBGCJFLAGS\fP +Options du compilateur Java GNU (gcj). Un sous\-ensemble de \fBCFLAGS\fP. +.TP +\fBFFLAGS\fP +Options du compilateur Fortran\ 77. Un sous\-ensemble de \fBCFLAGS\fP. +.TP +\fBFCFLAGS\fP +Options du compilateur Fortran\ 9x. Analogue à \fBFFLAGS\fP. +.TP +\fBLDFLAGS\fP +Options passées au compilateur lors du processus de liaison des exécutables +ou des objets partagés (si le linker est appelé directement, alors \fB\-Wl\fP et +\fB,\fP doivent être retirés de ces options). Valeur par défaut\ :\ aucune. +.PP +De nouveaux drapeaux pourront être ajoutés si besoin est (par exemple pour +la prise en charge de nouveaux langages). +. +.SH "ZONES D'OPTION" +.P +Chaque option de zone peut être activée ou désactivée avec les valeurs +\fBDEB_BUILD_OPTIONS\fP et \fBDEB_BUIL_MAINT_OPTIONS\fP de l'espace de variables +d'environnement grâce aux modificateurs «\ \fB+\fP\ » et «\ \fB\-\fP\ ». Par exemple, +pour activer l'option \fBhardening\fP «\ pie\ » et désactiver l'option +«\ fortify\ », il est possible d'indiquer cela dans \fBdebian/rules\fP\ : +.P + export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,\-fortify +.P +L'option spéciale \fBall\fP (valable dans toutes les zones) peut être utilisée +pour activer ou désactiver toutes les options de la zone à la fois. Ainsi, +tout désactiver dans la zone \fBhardening\fP en n'activant que «\ format\ » et +«\ fortify\ » peut être réalisé avec\ : +.P + export DEB_BUILD_MAINT_OPTIONS=hardening=\-all,+format,+fortify +. +.SS future +Plusieurs options de compilation (détaillées ci\-dessous) peuvent être +utilisées pour activer des fonctionnalités qui devraient être activées par +défaut, mais ne peuvent pas l'être pour des raisons de compatibilité avec +les versions précédentes. +.TP +\fBlfs\fP +Ce paramètre (désactivé par défaut) active la prise en charge des gros +fichiers (LFS) sur les architectures 32\ bits où l'ABI n'inclut pas LFS par +défaut, en ajoutant \fB\-D_LARGEFILE_SOURCE \-D_FILE_OFFSET_BITS=64\fP à +\fBCPPFLAGS\fP. +. +.SS qa +Plusieurs options de compilation (détaillées ci\-dessous) peuvent être +utilisées pour détecter des problèmes dans le code source ou dans le système +de construction. +.TP +\fBbug\fP +Ce paramètre (désactivé par défaut) ajoute toutes les options +d'avertissement détectant de façon fiable du code source problématique. Les +avertissements sont fatals. Les seuls drapeaux actuellement gérés sont +\fBCFLAGS\fP et \fBCXXFLAGS\fP avec des drapeaux définis à +\fB\-Werror=array\-bounds\fP, \fB\-Werror=clobbered\fP, +\fB\-Werror=implicit\-function\-declaration\fP et +\fB\-Werror=volatile\-register\-var\fP. +. +.TP +\fBcanary\fP +Ce paramètre (désactivé par défaut) ajoute des options détectrices +«\ canary\ » factices aux drapeaux de construction de telle sorte que les +rapports de compilation permettront de vérifier la façon dont ces drapeaux +se propagent et de repérer toute omission des paramètres de drapeaux +habituels. Les drapeaux actuellement pris en charge sont \fBCPPFLAGS\fP, +\fBCFLAGS\fP, \fBOBJCFLAGS\fP, \fBCXXFLAGS\fP ainsi que \fBOBJCXXFLAGS\fP, avec les +drapeaux définis à \fB\-D__DEB_CANARY_\fP\fIflag\fP_\fIrandom\-id\fP\fB__\fP, et +\fBLDFLAGS\fP paramétré à \fB\-Wl,\-z,deb\-canary\-\fP\fIrandom\-id\fP. +. +.SS sanitize +Plusieurs options de compilation (détaillées ci\-dessous) peuvent être +utilisées pour aider à nettoyer le binaire compilé face aux corruptions de +la mémoire, aux fuites de mémoire, à l'utilisation de mémoire après +libération et à des bogues au comportement indéfini. \fBNote\fP\ : ces options +ne devraient pas être utilisées pour des constructions en production car +elles peuvent réduire la fiabilité du code, réduire la sécurité ou même les +fonctionnalités. +.TP +\fBaddress\fP +Ce paramètre (désactivé par défaut) ajoute \fB\-fsanitize=address\fP à +\fBLDFLAGS\fP et \fB\-fsanitize=address \-fno\-omit\-frame\-pointer\fP à \fBCFLAGS\fP et +\fBCXXFLAGS\fP. +.TP +\fBthread\fP +Ce paramètre (désactivé par défaut) ajoute \fB\-fsanitize=thread\fP à \fBCFLAGS\fP, +\fBCXXFLAGS\fP et \fBLDFLAGS\fP. +.TP +\fBleak\fP +Ce paramètre (désactivé par défaut) ajoute \fB\-fsanitize=leak\fP à +\fBLDFLAGS\fP. Il est automatiquement désactivé si les fonctions \fBaddress\fP ou +\fBthread\fP sont activées, parce qu'elles l'impliquent. +.TP +\fBundefined\fP +Ce paramètre (désactivé par défaut) ajoute \fB\-fsanitize=undefined\fP à +\fBCFLAGS\fP, \fBCXXFLAGS\fP et \fBLDFLAGS\fP. +.SS "compilation renforcée" +Plusieurs options de compilation (détaillées ci\-dessous) peuvent être +utilisées pour accroître la résistance du binaire compilé face aux attaques +par corruption de la mémoire ou fournir des messages d'avertissement +supplémentaires lors de la compilation. Sauf mention contraire (voir +ci\-dessous), ces options sont activées par défaut pour les architectures qui +les gèrent. +.TP +\fBformat\fP +Ce réglage, activé par défaut, ajoute \fB\-Wformat \-Werror=format\-security\fP à +\fBCFLAGS\fP, \fBCXXFLAGS\fP, \fBOBJCFLAGS\fP et \fBOBJCXXFLAGS\fP. Cela provoquera +l'avertissement en cas d'utilisation de chaînes de formatage incorrectes et +échouera si les fonctions de formatage sont utilisées d'une façon qui +présente des risques pour la sécurité. Actuellement, ce réglage crée des +avertissements pour les appels des fonctions \fBprintf\fP et \fBscanf\fP lorsque +la chaîne de formatage n'est pas une chaîne littérale et qu'aucun paramètre +de formatage n'est utilisé (par exemple dans \fBprintf(foo);\fP au lieu de \fB +printf("%s", foo);\fP. Ce type de syntaxe peut créer un problème de sécurité +si la chaîne de formatage vient d'une source non sûre et contient «\ %n\ ». +. +.TP +\fBfortify\fP +Ce réglage, activé par défaut, ajoute \fB\-D_FORTIFY_SOURCE=2\fP à +\fBCPPFLAGS\fP. Lors de la création du code, le compilateur connaît un nombre +important d'informations relatives aux tailles de tampons (quand c'est +possible) et tente alors de remplacer des appels de fonctions avec une +taille illimitée de tampons, peu sûrs, par des appels avec des tampons de +taille limitée. Cette fonctionnalité est particulièrement utile pour du code +ancien et mal écrit. De plus, les chaînes de formatage dans la mémoire +accessible en écriture qui contiennent «\ %n\ » sont bloquées. Si une +application dépend de telles chaînes de formatage, un contournement devra +être mis en place. + +Veuillez noter que pour que cette option fasse effet, la source devra aussi +être compilée avec \fB\-O1\fP ou plus. Si la variable d'environnement +\fBDEB_BUILD_OPTIONS\fP contient \fInoopt\fP, la prise en charge de \fBfortify\fP +sera désactivée du fait des nouveaux avertissements émis par glibc +version\ 2.16 et ultérieure. +.TP +\fBstackprotector\fP +Ce réglage (activé par défaut si stackprotectorstrong n'est pas employé), +ajoute \fB\-fstack\-protector \-\-param=ssp\-buffer\-size=4\fP à \fBCFLAGS\fP, +\fBCXXFLAGS\fP, \fBOBJCFLAGS\fP, \fBOBJCXXFLAGS\fP, \fBGCJFLAGS\fP, \fBFFLAGS\fP et +\fBFCFLAGS\fP. Il ajoute des contrôles liés aux réécritures de piles. Cela +conduit des tentatives d'attaques par injection de code à terminer en +échec. Dans le meilleur des cas, cette protection transforme une +vulnérabilité d'injection de code en déni de service ou en non\-problème +(selon les applications). + +Cette fonctionnalité impose de lier le code à glibc (ou toute autre +bibliothèque fournissant \fB__stack_chk_fail\fP) et doit donc être désactivée +lorsque le code est construit avec \fB\-nostdlib\fP, \fB\-ffreestanding\fP ou +équivalents. +. +.TP +\fBstackprotectorstrong\fP +Ce réglage, activé par défaut, ajoute \fB\-fstack\-protector\-strong\fP à +\fBCFLAGS\fP, \fBCXXFLAGS\fP, \fBOBJCFLAGS\fP, \fBOBJCXXFLAGS\fP, \fBGCJFLAGS\fP, \fBFFLAGS\fP +et \fBFCFLAGS\fP. Il s'agit d'une version renforcée de \fBstackprotector\fP qui +n'affecte pas les performances de manière importante. + +Désactiver \fBstackprotector\fP désactive également ce paramètre. + +Cette fonctionnalité a les même exigences que \fBstackprotector\fP, en plus de +nécessiter gcc\ 4.9 ou plus récent. +. +.TP +\fBrelro\fP +Ce réglage, activé par défaut, ajoute \fB\-Wl,\-z,relro\fP à \fBLDFLAGS\fP. Lors du +chargement du programme, plusieurs parties de la mémoire ELF doivent être +écrites par l'éditeur de liens. Ce réglage indique au chargeur de mettre ces +sections en lecture seule avant de rendre le contrôle au +programme. L'utilisation habituelle de ce réglage est la protection contre +les attaques par réécriture GOT. Si cette option est désactivée, l'option +\fBbindnow\fP sera également désactivée. +. +.TP +\fBbindnow\fP +Ce réglage, désactivé par défaut, ajoute \fB\-Wl,\-z,now\fP à \fBLDFLAGS\fP. Lors du +chargement du programme, tous les symboles dynamiques sont résolus, ce qui +permet au PLT (Procedure Linkage Table) entier d'être en lecture seule (du +fait du réglage \fBrelro\fP ci\-dessus). Cette option ne peut être activée si +\fBrelro\fP ne l'est pas. +. +.TP +\fBpie\fP +Ce réglage (sans option globale par défaut depuis dpkg\ 1.18.23, parce qu'il +est maintenant activé par défaut par gcc dans les architectures Debian +amd64, arm64, armel, armhf, hurd\-i386, i386, kfreebsd\-amd64, kfreebsd\-i386, +mips, mipsel, mips64el, powerpc, ppc64, ppc64el, riscv64, s390x, sparc et +sparc64) ajoute les options requises pour activer ou désactiver PIE +(exécutable indépendant de l'emplacement) au moyen des fichiers de +spécifications de gcc, si nécessaire, selon que gcc injecte sur cette +architecture les drapeaux par lui\-même ou non. Si le réglage est activé et +que gcc injecte les drapeaux, il n'ajoute rien. Si le réglage est activé et +que gcc n'injecte pas les drapeaux, il ajoute \fB\-fPIE\fP (au moyen de +\fI%PKGDATADIR%/pie\-compiler.specs\fP) à \fBCFLAGS\fP, \fBCXXFLAGS\fP, \fBOBJCFLAGS\fP, +\fBOBJCXXFLAGS\fP, \fBGCJFLAGS\fP, \fBFFLAGS\fP et \fBFCFLAGS\fP, et \fB\-fPIE \-pie\fP (au +moyen de \fI%PKGDATADIR%/pie\-link.specs\fP) à \fBLDFLAGS\fP. Si le réglage est +désactivé et que gcc injecte les drapeaux, il ajoute \fB\-fno\-PIE\fP (au moyen +de \fI%PKGDATADIR%/no\-pie\-compile.specs\fP) à \fBCFLAGS\fP, \fBCXXFLAGS\fP, +\fBOBJCFLAGS\fP, \fBOBJCXXFLAGS\fP, \fBGCJFLAGS\fP, \fBFFLAGS\fP et \fBFCFLAGS\fP, et +\fB\-fno\-PIE \-no\-pie\fP (au moyen de \fI%PKGDATADIR%/no\-pie\-link.specs\fP) à +\fBLDFLAGS\fP. + +Les exécutables à position indépendante («\ Position Independent +Executable\ ») permettent d'utiliser la randomisation de l'organisation de +l'espace d'adressage (ASLR\ :\ «\ Address Space Layout Randomization\ »), qui +est gérée par certaines versions du noyau. Bien que ASLR puisse déjà être +mise en œuvre pour les zones de données dans la pile et le tampon (brk et +mmap), les zones de codes doivent être compilées comme indépendantes de la +position. Les bibliothèques partagées font déjà cela (\fB\-fPIC\fP) ce qui +permet automatiquement d'utiliser ASLR. Par contre les régions .text +binaires doivent être construites en mode PIE pour mettre en œuvre ASLR. Une +fois cela réalisé, les attaques ROP («\ Return Oriented Programming\ ») +deviennent plus difficiles car il n'existe pas d'emplacement statique d'où +rebondir pendant une attaque par corruption de la mémoire. + +PIE n'est pas compatible avec \fBfPIC\fP, aussi, en général, des précautions +doivent être prises lors de la construction d'objets partagés. Mais comme +les drapeaux PIE émis sont injectés par des fichiers de spécifications de +gcc, il devrait toujours être sûr de les définir sans condition +indépendamment du type d'objet en train d'être compilé ou lié. + +Les bibliothèques statiques peuvent être utilisées par des programmes ou +d'autres bibliothèques partagées. Selon les drapeaux utilisés pour compiler +tous les objets d'une bibliothèque statique, ces bibliothèques seront +utilisables par divers ensembles d'objets\ : + +.RS +.TP +\fBnone\fP +Ne peut être lié ni à un programme PIE, ni à une bibliothèque partagée. +.TP +\fB\-fPIE\fP +Peut être lié à tout programme, mais pas à une bibliothèque partagée +(recommandé). +.TP +\fB\-fPIC\fP +Peut être lié à tout programme et toute bibliothèque partagée. +.RE + +.IP +S'il est nécessaire de régler ces drapeaux manuellement, en contournant +l'injonction des spécifications de gcc, il y a plusieurs choses à prendre en +compte. Le passage sans condition et de façon explicite de \fB\-fPIE\fP, +\fB\-fpie\fP ou \fB\-pie\fP à un système de construction en utilisant libtool est +sûr dans la mesure où ces drapeaux seront retirés lors de la construction de +bibliothèques partagées. Sinon, sur les projets qui construisent à la fois +des programmes et des bibliothèques partagées, il faudrait s'assurer que, +lors de la construction des bibliothèques partagées, \fB\-fPIC\fP soit toujours +passé en dernier aux drapeaux de compilation tels que \fBCFLAGS\fP (de sorte +qu'il remplace tout \fB\-PIE\fP antérieur), et que \fB\-shared\fP soit passé en +dernier aux drapeaux de création de lien tels que \fBLDFLAGS\fP (de sorte qu'il +remplace tout \fB\-pie\fP antérieur). \fBNote\fP\ : Cela ne devrait pas être +nécessaire avec les mécanismes de spécification de gcc par défaut. + +.IP +De plus, comme la protection PIE est mise en œuvre à l'aide d'un registre +global, certaines architectures privées de registre (mais plus i386 depuis +les optimisations mises en œuvre dans gcc\ >=\ 5) peuvent souffrir de +pertes de performances allant jusqu'à 15\ % sur des charges d'applications +utilisant largement les segments de texte\ ; le plus souvent, cette perte de +performances n’excédera pas\ 1\ %. Pour des architectures offrant plus de +registres globaux (par exemple amd64), cette pénalisation n'existe +pratiquement pas. +.SS reproductible +Les options de compilation (détaillées ci\-dessous) peuvent aider à améliorer +la reproductibilité de la construction ou fournir des messages +d'avertissement supplémentaires lors de la compilation. Sauf mention +contraire (voir ci\-dessous), ces options sont activées par défaut pour les +architectures qui les gèrent. +.TP +\fBtimeless\fP +Ce paramètre, activé par défaut, ajoute \fB\-Wdate\-time\fP à \fBCPPFLAGS\fP. Cela +provoquera des avertissements quand les macros \fB__TIME__\fP, \fB__DATE__\fP et +\fB__TIMESTAMP__\fP sont utilisées. +. +.TP +\fBfixfilepath\fP +Ce paramètre, désactivé par défaut, ajoute +\fB\-ffile\-prefix\-map=\fP\fIBUILDPATH\fP\fB=.\fP à \fBCFLAGS\fP, \fBCXXFLAGS\fP, +\fBOBJCFLAGS\fP, \fBOBJCXXFLAGS\fP, \fBGCJFLAGS\fP, \fBFFLAGS\fP et \fBFCFLAGS\fP où +\fBBUILDPATH\fP est fixé sur le répertoire de plus haut niveau du paquet en +construction. Cela a pour effet de retirer le chemin de construction de tout +fichier généré. + +Si à la fois \fBfixdebugpath\fP et \fBfixfilepath\fP sont définis, cette option a +la priorité parce c'est un sur\-ensemble du premier. +.TP +\fBfixdebugpath\fP +Ce réglage, activé par défaut, ajoute +\fB\-fdebug\-prefix\-map=\fP\fIBUILDPATH\fP\fB=.\fP à \fBCFLAGS\fP, \fBCXXFLAGS\fP, +\fBOBJCFLAGS\fP, \fBOBJCXXFLAGS\fP, \fBGCJFLAGS\fP, \fBFFLAGS\fP et \fBFCFLAGS\fP où +\fBBUILDPATH\fP est fixé sur le répertoire de plus haut niveau du paquet en +construction. Cela a pour effet de retirer le chemin de construction de tous +les symboles de débogage générés. +. +.SH ENVIRONNEMENT +Deux jeux de variables d'environnement effectuent les mêmes opérations. Le +premier (DEB_\fIdrapeau\fP_\fIopération\fP) ne devrait jamais être utilisé depuis +\fBdebian/rules\fP. Il est destiné aux utilisateurs souhaitant recompiler le +paquet source avec des drapeaux de compilation modifiés. Le second +(DEB_\fIdrapeau\fP_MAINT_\fIopération\fP) ne doit être utilisé que dans +\fBdebian/rules\fP par les responsables de paquets pour modifier les drapeaux +de compilation concernés. +.TP +\fBDEB_\fP\fIdrapeau\fP\fB_SET\fP +.TQ +\fBDEB_\fP\fIdrapeau\fP\fB_MAINT_SET\fP +Cette variable permet de forcer la valeur renvoyée pour le \fIdrapeau\fP +indiqué. +.TP +\fBDEB_\fP\fIdrapeau\fP\fB_STRIP\fP +.TQ +\fBDEB_\fP\fIdrapeau\fP\fB_MAINT_STRIP\fP +Cette variable peut être utilisée pour fournir une liste d'options (séparées +par des espaces) qui seront retirées du jeu de drapeaux renvoyé pour le +\fIdrapeau\fP indiqué. +.TP +\fBDEB_\fP\fIdrapeau\fP\fB_APPEND\fP +.TQ +\fBDEB_\fP\fIdrapeau\fP\fB_MAINT_APPEND\fP +Cette variable permet d'ajouter des options à la valeur renvoyée pour le +\fIdrapeau\fP indiqué. +.TP +\fBDEB_\fP\fIdrapeau\fP\fB_PREPEND\fP +.TQ +\fBDEB_\fP\fIdrapeau\fP\fB_MAINT_PREPEND\fP +Cette variable permet de préfixer la valeur renvoyée pour le \fIdrapeau\fP +indiqué par des options supplémentaires. +.TP +\fBDEB_BUILD_OPTIONS\fP +.TQ +\fBDEB_BUILD_MAINT_OPTIONS\fP +Ces variables peuvent être utilisées par un utilisateur ou un responsable de +paquet pour activer ou désactiver différentes options de zone qui affectent +les drapeaux de construction. La variable \fBDEB_BUILD_MAINT_OPTIONS\fP +outrepasse tous les paramètres de la zone d'options +\fBDEB_BUILD_OPTIONS\fP. Voir la section \fBZONES D'OPTION\fP pour plus de +détails. +.TP +\fBDEB_VENDOR\fP +Ce réglage définit l'éditeur («\ vendor\ ») actuel. Si cette valeur est vide, +le contenu du fichier \fB%PKGCONFDIR%/origins/default\fP est utilisé. +.TP +\fBDEB_BUILD_PATH\fP +Cette variable configure le chemin de construction (depuis dpkg\ 1.18.8) à +utiliser avec des fonctions telles que \fBfixdebugpath\fP de telle sorte +qu'elles soient contrôlées par l'appelant. Cette variable est actuellement +spécifique à Debian et à ses dérivés. +.TP +\fBDPKG_COLORS\fP +Définit le mode de couleur (depuis dpkg\ 1.18.5). Les valeurs actuellement +acceptées sont \fBauto\fP (par défaut), \fBalways\fP et \fBnever\fP. +.TP +\fBDPKG_NLS\fP +Si cette variable est définie, elle sera utilisée pour décider l'activation +de la prise en charge des langues (NLS –\ Native Language Support), connu +aussi comme la gestion de l'internationalisation (ou i18n) (depuis +dpkg\ 1.19.0). Les valeurs permises sont\ : \fB0\fP et \fB1\fP (par défaut). +. +.SH FICHIERS +.SS "Fichiers de configuration." +.TP +\fB%PKGCONFDIR%/buildflags.conf\fP +Fichier de configuration pour l'ensemble du système. +.TP +\fB$XDG_CONFIG_HOME/dpkg/buildflags.conf\fP ou +.TQ +\fB$HOME/.config/dpkg/buildflags.conf\fP +Fichier de configuration propre à l'utilisateur +.SS "Gestion de l'empaquetage" +.TP +\fB%PKGDATADIR%/buildflags.mk\fP +Fragment de fichier Makefile qui chargera (et facultativement exportera) +dans les variables (depuis dpkg\ 1.16.1) tous les drapeaux pris en charge par +\fBdpkg\-buildflags\fP. +. +.SH EXEMPLES +Pour passer des drapeaux de compilation à une commande de compilation dans +un Makefile\ : +.PP +.RS 4 +.nf +$(MAKE) $(shell dpkg\-buildflags \-\-export=cmdline) + +\&./configure $(shell dpkg\-buildflags \-\-export=cmdline) +.fi +.RE +.PP +Pour définir les drapeaux de compilation dans un script shell ou un fragment +de shell, on peut utiliser \fBeval\fP pour interpréter la sortie et exporter +les drapeaux dans l'environnement\ : +.PP +.RS 4 +.nf +eval "$(dpkg\-buildflags \-\-export=sh)" && make +.fi +.RE +.PP +ou définir les paramètres de position à passer à la commande\ : +.PP +.RS 4 +.nf +eval "set \-\- $(dpkg\-buildflags \-\-export=cmdline)" +for dir in a b c; do (cd $dir && ./configure "$@" && make); done +.fi +.RE +. +.SS "Utilisation dans debian/rules" +Il faut appeler \fBdpkg\-buildflags\fP ou inclure \fBbuildflags.mk\fP à partir du +fichier \fBdebian/rules\fP pour obtenir les drapeaux de compilation nécessaires +à passer au système de construction. Veuillez noter que les anciennes +versions de \fBdpkg\-buildpackage\fP (antérieures à dpkg\ 1.16.1) exportaient ces +drapeaux automatiquement. Néanmoins, il est déconseillé de dépendre de ce +comportement parce qu'il casse l'appel manuel de \fBdebian/rules\fP. +.PP +Pour les paquets avec des systèmes de construction du style autoconf, il est +possible de passer les options appropriées à configure ou \fBmake\fP(1) +directement, comme vu ci\-dessus. +.PP +Pour d'autres systèmes de construction ou si on souhaite un contrôle +extrêmement précis sur le choix et la position où sont passés les drapeaux, +\fB\-\-get\fP peut être utilisé. Autrement, il est possible d'inclure +\fBbuildflags.mk\fP qui s'occupe de l'appel de \fBdpkg\-buildflags\fP et du +placement des drapeaux de compilation dans les variables de make. +.PP +Si vous voulez exporter tous les drapeaux de compilation dans +l'environnement (où le système de construction peut les récupérer)\ : +.PP +.RS 4 +.nf +DPKG_EXPORT_BUILDFLAGS = 1 +include %PKGDATADIR%/buildflags.mk +.fi +.RE +.PP +Pour un contrôle supplémentaire sur ce qui est exporté, vous pouvez exporter +manuellement les variables (puisque aucune n'est exportée par défaut)\ : +.PP +.RS 4 +.nf +include %PKGDATADIR%/buildflags.mk +export CPPFLAGS CFLAGS LDFLAGS +.fi +.RE +.PP +Et enfin, vous pouvez bien sûr passer manuellement les drapeaux aux +commandes\ : +.PP +.RS 4 +.nf +include %PKGDATADIR%/buildflags.mk +build\-arch: +\& $(CC) \-o hello hello.c $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) +.fi +.RE +.SH TRADUCTION +Ariel VARDI <ariel.vardi@freesbee.fr>, 2002. +Philippe Batailler, 2006. +Nicolas François, 2006. +Veuillez signaler toute erreur à <debian\-l10n\-french@lists.debian.org>. |