Maison Tutoriel système Linux Commandes GCC : débloquer les possibilités infinies de la programmation Linux

Commandes GCC : débloquer les possibilités infinies de la programmation Linux

Feb 10, 2024 pm 06:54 PM
linux linux教程 linux系统 linux命令 shell脚本 overflow Linux embarqué Débuter avec Linux apprentissage Linux

En tant que compilateur open source populaire, GCC (GNU Compiler Collection) est devenu l'un des standards pour le développement de logiciels Linux. Si vous souhaitez entrer dans le monde de la programmation Linux, la maîtrise des commandes GCC est indispensable. Que vous soyez débutant ou développeur professionnel, GCC vous ouvre des possibilités infinies.

Le compilateur gcc fournit une liste presque infinie d'options de ligne de commande. Bien sûr, personne n'aura utilisé ou ne maîtrisera toutes ses options de ligne de commande, mais il existe certaines options de ligne de commande que tout utilisateur de gcc devrait connaître - voire être tenu de connaître. Certains d’entre eux sont couramment utilisés et d’autres le sont moins, mais ce n’est pas parce qu’ils sont moins utilisés qu’ils sont moins utiles que les premiers.

Dans cette série d'articles, nous nous concentrons sur certaines options de ligne de commande gcc rares mais utiles. Plusieurs de ces options de ligne de commande ont été mentionnées dans la première section.

Je ne sais pas si vous vous souvenez qu'au début de la première partie de cette série de tutoriels, j'ai brièvement mentionné l'option -Wall que les développeurs utilisent habituellement pour générer des avertissements, et n'inclut pas certains avertissements spéciaux. Si vous ne connaissez pas ces avertissements spéciaux et ne savez pas comment les générer, ne vous inquiétez pas, je vous expliquerai tous les détails à leur sujet dans cet article.

En plus de cela, cet article couvrira également les options d'avertissement de gcc liées aux valeurs à virgule flottante et comment mieux gérer la liste d'options de ligne de commande gcc lorsqu'elle devient volumineuse.

Avant de continuer, n'oubliez pas que tous les exemples, commandes et instructions de ce didacticiel ont été testés sur le système d'exploitation Ubuntu 16.04 LTS et gcc 5.4.0.

Commandes GCC : débloquer les possibilités infinies de la programmation Linux

Générer des avertissements lorsque l'option -Wall n'est pas incluse

Bien que l'option -Wall du compilateur gcc couvre la plupart des indicateurs d'avertissement, certains avertissements ne peuvent toujours pas être générés. Pour les générer, utilisez l'option -Wextra.

Par exemple, le code suivant :

#include 
#include 
int main()
{
    int i=0;
    /* ...
       some code here 
       ...
    */

    if(i);
        return 1;
     return 0; 
}
Copier après la connexion

J'ai accidentellement mis un point-virgule supplémentaire après la condition if. Désormais, si vous compilez à l'aide de la commande gcc suivante, aucun avertissement ne sera généré.
gcc -Wall test.c -o test

Mais si vous utilisez l'option -Wextra en même temps pour compiler : gcc -Wall -Wextra test.c -o test
Un avertissement comme celui-ci sera généré :

test.c: In function ‘main’:
test.c:10:8: warning: suggest braces around empty body in an ‘if’ statement
[-Wempty-body] if(i);
Copier après la connexion

Il ressort clairement de l'avertissement ci-dessus que l'option -Wextra active en interne l'option -Wempty-body, permettant de détecter le code suspect et de générer des avertissements. Vous trouverez ci-dessous tous les indicateurs d'avertissement activés par cette option.

-Wclobbered
-Wempty-body
-Wignored-qualifiers
-Wmissing-field-initializers
-Wmissing-parameter-type(仅针对 C 语言)
-Wold-style-declaration(仅针对 C 语言)
-Woverride-init
-Wsign-compare
-Wtype-limits
-Wuninitialized
-Wunused-parameter(只有和-Wunused 或 -Wall 选项使用时才会启用)
-Wunused-but-set-parameter (只有和-Wunused或-Wall 选项使用时才会生成)
Copier après la connexion

Si vous souhaitez en savoir plus sur les drapeaux mentionnés ci-dessus, veuillez consulter le manuel de gcc.

De plus, l'option -Wextra générera également des avertissements dans les situations suivantes :

一个指针和整数 0 进行 , 或 >= 比较
(仅 C++)一个枚举类型和一个非枚举类型同时出现在一个条件表达式中
(仅 C++)有歧义的虚拟基底
(仅 C++)寄存器类型的数组加下标
(仅 C++)对寄存器类型的变量进行取址
(仅 C++)基类没有在派生类的复制构建函数中进行初始化
Copier après la connexion

Générer un avertissement lors de la comparaison de valeurs à virgule flottante pour l'égalité

Vous savez peut-être déjà que les valeurs à virgule flottante ne peuvent pas être comparées pour une égalité exacte (sinon, lisez la FAQ relative aux comparaisons à virgule flottante). Mais si vous faites cela accidentellement, le compilateur gcc émettra-t-il une erreur ou un avertissement ? Testons-le :

Voici un morceau de code qui utilise l'opérateur == pour comparer des valeurs à virgule flottante :

#include

void compare(float x, float y)
{
    if(x == y)
    {
        printf("/n EQUAL /n");
    }
}

int main(void)
{
    compare(1.234, 1.56789);

    return 0; 
}
Copier après la connexion

Utilisez la commande gcc suivante (avec les options -Wall et -Wextra) pour compiler ce code :

gcc -Wall -Wextra test.c -o test
Copier après la connexion

Malheureusement, la commande ci-dessus ne génère aucun avertissement lié à la comparaison des valeurs à virgule flottante. Un rapide coup d'œil au manuel de gcc révèle qu'il existe une option dédiée -Wfloat-equal qui peut être utilisée dans cette situation.
Voici la commande avec cette option :

gcc -Wall -Wextra -Wfloat-equal test.c -o test
Copier après la connexion

Voici le résultat produit par cette commande :

test.c: In function ‘compare’:
test.c:5:10: warning: comparing floating point with == or != is unsafe [-Wfloat-equal]
 if(x == y)
Copier après la connexion

Comme vous pouvez le voir dans le résultat ci-dessus, l'option -Wfloat-equal force le compilateur gcc à générer un avertissement lié aux comparaisons de valeurs à virgule flottante.

Voici ce que dit le manuel de gcc à propos de cette option :

«

L'idée derrière cela est qu'il est parfois pratique pour les programmeurs de considérer les valeurs à virgule flottante comme des nombres réels à peu près infiniment précis. Si vous faites cela, vous devez alors déterminer, en profilant le code, ou autrement, l'erreur maximale ou maximale possible introduite par ce calcul, puis l'autoriser lors de la comparaison (et lors de la production du résultat, mais c'est une autre affaire). question) erreur. En particulier, vous ne devez pas vérifier l'égalité, mais vous devez vérifier si les deux valeurs peuvent avoir des plages qui se chevauchent ; cela se fait à l'aide d'opérateurs relationnels, donc la comparaison d'égalité peut être une erreur.

Comment mieux gérer les options de ligne de commande gcc

如果在你使用的 gcc 命令中,命令行选项列表变得很大而且很难管理,那么你可以把它放在一个文本文件中,然后把文件名作为 gcc 命令的一个参数。之后,你必须使用@file 命令行选项。

比如,下面这行是你的 gcc 命令:
gcc -Wall -Wextra -Wfloat-equal test.c -o test

然后你可以把这三个和警告相关的选项放到一个文件里,文件名叫做 gcc-options:
$ cat gcc-options
-Wall -Wextra -Wfloat-equal
这样,你的 gcc 命令会变得更加简洁并且易于管理:
gcc @gcc-options test.c -o test

下面是 gcc 手册关于 @file 的说明:

从文件中读取命令行选项。读取到的选项随之被插入到原始 @file 选项所在的位置。如果文件不存在或者无法读取,那么这个选项就会被当成文字处理,而不会被删除。

文件中的选项以空格分隔。选项中包含空白字符的话,可以用一个由单引号或双引号包围完整选项。任何字符(包括反斜杠: ‘/’)均可能通过一个 ‘/’ 前缀而包含在一个选项中。如果该文件本身包含额外的 @file选项,那么它将会被递归处理。

结论

在这个系列的教程中,我们一共讲解了 5 个不常见但是很有用的 gcc 命令行选项:

-Save-temps
-g
-Wextra
-Wfloat-equal

@file
Copier après la connexion

记得花时间练习使用每一个选项,同时不要忘了浏览 gcc 手册上面所提供的关于它们的全部细节。

因此,无论你是正在学习Linux编程,还是已经成为一名经验丰富的开发者,掌握GCC命令将会让你事半功倍。尝试使用GCC命令去编译各种不同的程序,挑战自己的极限,让你的Linux编程之路越来越精彩

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Différence entre Centos et Ubuntu Différence entre Centos et Ubuntu Apr 14, 2025 pm 09:09 PM

Les principales différences entre Centos et Ubuntu sont: l'origine (Centos provient de Red Hat, pour les entreprises; Ubuntu provient de Debian, pour les particuliers), la gestion des packages (Centos utilise Yum, se concentrant sur la stabilité; Ubuntu utilise APT, pour une fréquence de mise à jour élevée), le cycle de support (CentOS fournit 10 ans de soutien, Ubuntu fournit un large soutien de LT tutoriels et documents), utilisations (Centos est biaisé vers les serveurs, Ubuntu convient aux serveurs et aux ordinateurs de bureau), d'autres différences incluent la simplicité de l'installation (Centos est mince)

Centos arrête la maintenance 2024 Centos arrête la maintenance 2024 Apr 14, 2025 pm 08:39 PM

Centos sera fermé en 2024 parce que sa distribution en amont, Rhel 8, a été fermée. Cette fermeture affectera le système CentOS 8, l'empêchant de continuer à recevoir des mises à jour. Les utilisateurs doivent planifier la migration et les options recommandées incluent CentOS Stream, Almalinux et Rocky Linux pour garder le système en sécurité et stable.

Comment installer CentOS Comment installer CentOS Apr 14, 2025 pm 09:03 PM

Étapes d'installation de CentOS: Téléchargez l'image ISO et Burn Bootable Media; démarrer et sélectionner la source d'installation; sélectionnez la langue et la disposition du clavier; configurer le réseau; partitionner le disque dur; définir l'horloge système; créer l'utilisateur racine; sélectionnez le progiciel; démarrer l'installation; Redémarrez et démarrez à partir du disque dur une fois l'installation terminée.

Quelles sont les méthodes de sauvegarde pour Gitlab sur Centos Quelles sont les méthodes de sauvegarde pour Gitlab sur Centos Apr 14, 2025 pm 05:33 PM

La politique de sauvegarde et de récupération de GitLab dans le système CentOS afin d'assurer la sécurité et la récupérabilité des données, Gitlab on CentOS fournit une variété de méthodes de sauvegarde. Cet article introduira plusieurs méthodes de sauvegarde courantes, paramètres de configuration et processus de récupération en détail pour vous aider à établir une stratégie complète de sauvegarde et de récupération de GitLab. 1. MANUEL BACKUP Utilisez le Gitlab-RakegitLab: Backup: Créer la commande pour exécuter la sauvegarde manuelle. Cette commande sauvegarde des informations clés telles que le référentiel Gitlab, la base de données, les utilisateurs, les groupes d'utilisateurs, les clés et les autorisations. Le fichier de sauvegarde par défaut est stocké dans le répertoire / var / opt / gitlab / backups. Vous pouvez modifier / etc / gitlab

Explication détaillée du principe docker Explication détaillée du principe docker Apr 14, 2025 pm 11:57 PM

Docker utilise les fonctionnalités du noyau Linux pour fournir un environnement de fonctionnement d'application efficace et isolé. Son principe de travail est le suivant: 1. Le miroir est utilisé comme modèle en lecture seule, qui contient tout ce dont vous avez besoin pour exécuter l'application; 2. Le Système de fichiers Union (UnionFS) empile plusieurs systèmes de fichiers, ne stockant que les différences, l'économie d'espace et l'accélération; 3. Le démon gère les miroirs et les conteneurs, et le client les utilise pour l'interaction; 4. Les espaces de noms et les CGROUP implémentent l'isolement des conteneurs et les limitations de ressources; 5. Modes de réseau multiples prennent en charge l'interconnexion du conteneur. Ce n'est qu'en comprenant ces concepts principaux que vous pouvez mieux utiliser Docker.

Comment utiliser Docker Desktop Comment utiliser Docker Desktop Apr 15, 2025 am 11:45 AM

Comment utiliser Docker Desktop? Docker Desktop est un outil pour exécuter des conteneurs Docker sur les machines locales. Les étapes à utiliser incluent: 1. Installer Docker Desktop; 2. Démarrer Docker Desktop; 3. Créer une image Docker (à l'aide de DockerFile); 4. Build Docker Image (en utilisant Docker Build); 5. Exécuter Docker Container (à l'aide de Docker Run).

Comment monter un disque dur dans les centos Comment monter un disque dur dans les centos Apr 14, 2025 pm 08:15 PM

Le support de disque dur CentOS est divisé en étapes suivantes: Déterminez le nom du périphérique du disque dur (/ dev / sdx); créer un point de montage (il est recommandé d'utiliser / mnt / newdisk); Exécutez la commande Mount (mont / dev / sdx1 / mnt / newdisk); modifier le fichier / etc / fstab pour ajouter une configuration de montage permanent; Utilisez la commande umount pour désinstaller l'appareil pour vous assurer qu'aucun processus n'utilise l'appareil.

Que faire après Centos arrête la maintenance Que faire après Centos arrête la maintenance Apr 14, 2025 pm 08:48 PM

Une fois CentOS arrêté, les utilisateurs peuvent prendre les mesures suivantes pour y faire face: sélectionnez une distribution compatible: comme Almalinux, Rocky Linux et CentOS Stream. Migrez vers les distributions commerciales: telles que Red Hat Enterprise Linux, Oracle Linux. Passez à Centos 9 Stream: Rolling Distribution, fournissant les dernières technologies. Sélectionnez d'autres distributions Linux: comme Ubuntu, Debian. Évaluez d'autres options telles que les conteneurs, les machines virtuelles ou les plates-formes cloud.

See all articles