


Pourquoi Linux a-t-il besoin de compiler le code source ?
Raison : 1. Il existe de nombreuses versions de Linux, mais chaque version utilise des versions de logiciel ou de noyau différentes, et l'environnement dont dépend le package binaire peut ne pas nécessairement fonctionner normalement, donc la plupart des logiciels fournissent directement le code source pour la compilation et l'installation. 2. Facile à personnaliser pour répondre à différents besoins. 3. Il est pratique pour l'exploitation, la maintenance et la maintenance du développeur ; le code source peut être conditionné sous forme binaire, mais l'empaquetage de ce logiciel nécessitera un travail supplémentaire coûteux, y compris la maintenance, donc s'il s'agit de code source, le fabricant du logiciel le maintiendra directement. .
L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.
Pourquoi Linux a-t-il besoin de compiler le code source
De manière générale, nos méthodes d'installation de logiciels incluent yum (rpm) et la compilation du code source. Alors pourquoi avons-nous besoin d'une compilation de code source pour installer certains logiciels ? Il y a plusieurs raisons de choisir le code source pour compiler et installer le logiciel :
pour répondre à différentes plates-formes d'exploitation. Nous avons de nombreuses versions de Linux, mais chaque version utilise des versions de logiciel ou de noyau différentes, et l'environnement dont dépendent nos packages binaires peut être différent. ne fonctionne pas correctement, donc la plupart des logiciels fournissent directement le code source !
Facile à personnaliser pour répondre à différents besoins. Plusieurs fois, le logiciel dont nous avons besoin peut être personnalisé. Je peux installer tout ce dont j'ai besoin. La plupart des codes binaires peuvent être installés en un seul clic, le degré de liberté n'est donc pas élevé !
Il est pratique pour l'exploitation, la maintenance et la maintenance des développeurs. Notre code source peut être empaqueté sous forme binaire, mais l'empaquetage de ce logiciel nécessitera un travail supplémentaire coûteux, y compris la maintenance, donc s'il s'agit de code source, le fabricant du logiciel le fera directement. Maintenance, mais s'il s'agit d'un binaire, elle est généralement fournie par le distributeur Linux.
Tutoriel de code source de compilation Linux
Presque tous les logiciels sous Linux sont sous licence GPL, donc presque tous les logiciels fourniront du code source.
Pour être exécuté sous Linux, un logiciel doit être un fichier binaire. Par conséquent, lorsque nous obtenons le code source du logiciel, nous devons le compiler dans un fichier binaire pour l'exécuter sous Linux.
1. Processus de compilation du logiciel
Il faut deux étapes pour compiler le code source dans un fichier binaire pouvant être exécuté sous Linux :
Utilisez le compilateur gcc pour compiler le code source dans un fichier objet.
Utilisez à nouveau gcc Le compilateur lie le fichier objet dans un fichier binaire
Ce processus semble simple, mais il ne l'est pas. Le code source d'un logiciel est souvent encapsulé dans plusieurs fichiers sources. De plus, ces fichiers présentent des dépendances complexes et la compilation doit être effectuée dans le strict respect de l'ordre spécifié, ce qui augmente sans aucun doute la difficulté de la compilation. Heureusement, la commande make peut nous aider à simplifier le processus de compilation.
L'ensemble du processus de compilation est condensé dans le fichier Makefile (indiquant à la commande make comment compiler et lier le programme). Lorsque la commande make est exécutée, make recherchera le fichier Makefile dans le répertoire actuel et terminera toute la compilation en fonction. aux exigences du dossier.
Le fichier Makefile est généré par la commande configure. Lors de l'exécution de la commande configure, configure générera dynamiquement un Makefile adapté à ce système en fonction de l'environnement système actuel pour être utilisé par la commande make.
2. Étapes d'installation du code source Linux
Obtenez le code source
Téléchargez le code source du logiciel dans /usr/local/ et décompressez-le.Affichez les fichiers INSTALL et README
Après la décompression, affichez les fichiers INSTALL et README Ces deux fichiers décrivent en détail la méthode d'installation et les précautions de ce logiciel.Créer un Makefile
Exécutez la commande configure pour générer un Makefile.Compile
Exécutez la commande make clean;make pour compiler le code source dans un fichier binaire.
PS : La commande make clean est utilisée pour effacer les fichiers cibles générés par la dernière compilation. Cette étape est facultative, mais afin de garantir le succès de la compilation, il est préférable de l'ajouter. Empêchez les échecs de compilation dus aux fichiers objets résiduels dans le logiciel.Installation
Exécutez la commande make install pour installer le fichier binaire compilé à l'étape précédente dans le répertoire spécifié.
3. Démo d'installation
1) Entrez /usr/local/ et créez le répertoire memcached :
cd /usr/local/ mkdir memcached
2) Téléchargez le code source de memcached
wget http://memcached.org/files/memcached-1.4.29.tar.gz
3. ) Décompressez le code source
tar -zxvf memcached-1.4.29.tar.gz
4) Exécutez configure pour générer un Makefile
./configure --prefix=/usr/local/memcached/
A ce moment, un Makefile sera généré dans le répertoire courant.
Remarque : Le paramètre –prefix spécifie le répertoire d'installation du logiciel. Lorsque la commande make install est exécutée, le logiciel sera installé dans ce chemin. Si ce paramètre n'est pas spécifié et que le préfixe n'est pas spécifié, le fichier exécutable sera placé par défaut dans /usr/local/bin, et la bibliothèque. Le fichier sera placé dans /usr/local/lib par défaut, le fichier de configuration est placé dans /usr/local/etc par défaut. D'autres fichiers de ressources sont placés dans /usr/local/share.
5) Exécutez make, lisez les instructions du Makefile et compilez le code source
make
此时make会读取Makefile文件,将源码编译成二进制文件,并存放在当前目录下。
执行这一步之前可以先进行清理作业:
make clean && make uninstall
6)执行make install,将软件安装至指定目录
make install
此时二进制文件会被安装到先前configure prefix参数设置的路径中去。
安装完成!
4、cmake命令(了解)
cmake就是一个与make同级别的编译工具,只不过它依靠的不是Makefile作为编译规则,而是根据CMakeLists.txt来编译的。
CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。
CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(make install)、测试安装的程序是否能正确执行(make test,或者ctest)、生成当前平台的安装包(make package)、生成源码包(make package_source)、产生Dashboard显示数据并上传等高级功能,只要在CMakeLists.txt中简单配置,就可以完成很多复杂的功能,包括写测试用例。
如果有嵌套目录,子目录下可以有自己的CMakeLists.txt。
相关推荐:《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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Pour ouvrir un fichier web.xml, vous pouvez utiliser les méthodes suivantes: Utilisez un éditeur de texte (tel que le bloc-notes ou TextEdit) pour modifier les commandes à l'aide d'un environnement de développement intégré (tel qu'Eclipse ou NetBeans) (Windows: Notepad web.xml; Mac / Linux: Open -A TextEdit web.xml)

Le multithreading dans la langue peut considérablement améliorer l'efficacité du programme. Il existe quatre façons principales d'implémenter le multithreading dans le langage C: créer des processus indépendants: créer plusieurs processus en cours d'exécution indépendante, chaque processus a son propre espace mémoire. Pseudo-Multithreading: Créez plusieurs flux d'exécution dans un processus qui partagent le même espace mémoire et exécutent alternativement. Bibliothèque multi-thread: Utilisez des bibliothèques multi-threades telles que PTHEADS pour créer et gérer des threads, en fournissant des fonctions de fonctionnement de thread riches. Coroutine: une implémentation multi-thread légère qui divise les tâches en petites sous-tâches et les exécute tour à tour.

Linux est mieux utilisé comme gestion de serveurs, systèmes intégrés et environnements de bureau. 1) Dans la gestion des serveurs, Linux est utilisé pour héberger des sites Web, des bases de données et des applications, assurant la stabilité et la fiabilité. 2) Dans les systèmes intégrés, Linux est largement utilisé dans les systèmes électroniques intelligents et automobiles en raison de sa flexibilité et de sa stabilité. 3) Dans l'environnement de bureau, Linux fournit des applications riches et des performances efficaces.

Les principales raisons pour lesquelles vous ne pouvez pas vous connecter à MySQL en tant que racines sont des problèmes d'autorisation, des erreurs de fichier de configuration, des problèmes de mot de passe incohérents, des problèmes de fichiers de socket ou une interception de pare-feu. La solution comprend: vérifiez si le paramètre Bind-Address dans le fichier de configuration est configuré correctement. Vérifiez si les autorisations de l'utilisateur racine ont été modifiées ou supprimées et réinitialisées. Vérifiez que le mot de passe est précis, y compris les cas et les caractères spéciaux. Vérifiez les paramètres et les chemins d'autorisation du fichier de socket. Vérifiez que le pare-feu bloque les connexions au serveur MySQL.

Dois-je installer un client Oracle lors de la connexion à une base de données Oracle à l'aide de Go? Lorsque vous développez GO, la connexion aux bases de données Oracle est une exigence commune ...

J'ai développé un projet appelé Lua-Libuv et je suis heureux de partager mon expérience. L'intention initiale du projet est d'explorer comment utiliser Libuv (une bibliothèque d'E / S asynchrone écrite en c) pour créer un serveur HTTP simple sans avoir à apprendre le langage C en profondeur. Avec l'aide de Chatgpt, j'ai terminé le code de base de HTTP.C. Lorsque je traite des connexions persistantes, j'ai réussi à mettre en œuvre la clôture de la connexion et à libérer les ressources au bon moment. Au début, j'ai essayé de créer un serveur simple qui a mis fin au programme principal en fermant la connexion, mais j'ai eu quelques problèmes. J'ai essayé d'envoyer des blocs de données à l'aide de streaming, et pendant que cela fonctionne, cela bloque le thread principal. En fin de compte, j'ai décidé d'abandonner cette approche parce que mon objectif n'était pas d'apprendre la langue C en profondeur. Enfin, je

C La compilation conditionnelle du langage est un mécanisme pour compiler sélectivement les blocs de code en fonction des conditions de temps de compilation. Les méthodes d'introduction incluent: l'utilisation des directives #IF et #ELSE pour sélectionner des blocs de code en fonction des conditions. Les expressions conditionnelles couramment utilisées incluent STDC, _WIN32 et Linux. Cas pratique: imprimez différents messages en fonction du système d'exploitation. Utilisez différents types de données en fonction du nombre de chiffres du système. Différents fichiers d'en-tête sont pris en charge selon le compilateur. La compilation conditionnelle améliore la portabilité et la flexibilité du code, ce qui le rend adaptable aux modifications du compilateur, du système d'exploitation et de l'architecture du processeur.

1.0.1 Préface Ce projet (y compris le code et les commentaires) a été enregistré pendant ma rouille autodidacte. Il peut y avoir des déclarations inexactes ou peu claires, veuillez vous excuser. Si vous en profitez, c'est encore mieux. 1.0.2 Pourquoi Rustrust est-il fiable et efficace? La rouille peut remplacer C et C, par des performances similaires mais une sécurité plus élevée, et ne nécessite pas de recompilation fréquente pour vérifier les erreurs comme C et C. Les principaux avantages incluent: la sécurité de la mémoire (empêcher les pointeurs nuls de déréférences, les pointeurs pendants et la contention des données). Filetage (assurez-vous que le code multithread est sûr avant l'exécution). Évitez le comportement non défini (par exemple, le tableau hors limites, les variables non initialisées ou l'accès à la mémoire libérée). Rust offre des fonctionnalités de langue moderne telles que les génériques
