Table des matières
Chemin du compilateur
Maison tutoriels informatiques connaissances en informatique Comment compiler de manière croisée des programmes exécutables de différents systèmes sur le serveur Ubuntu ?

Comment compiler de manière croisée des programmes exécutables de différents systèmes sur le serveur Ubuntu ?

Mar 06, 2024 pm 01:34 PM
gcc 路径 bibliothèque standard usr

Je crois que de nombreux programmeurs C se sont posé cette question : que se passe-t-il si un serveur a différentes versions de gcc ?

La réponse est oui. Lorsque nous utilisons généralement gcc pour compiler les fichiers sources, ce gcc est le premier gcc trouvé dans la variable d'environnement système PATH.

Et si vous souhaitez compiler de manière croisée des programmes pour différents systèmes ? Cela nécessite plusieurs ensembles de chaînes d'outils de compilation, et les chaînes d'outils correspondantes sont utilisées pour compiler les programmes du système cible.

Chemin par défaut

  • Chemin du compilateur : généralement placé dans le répertoire /usr/bin.
  • Chemin du fichier d'en-tête : les fichiers d'en-tête au niveau du système sont généralement placés /usr/include 中,标准库的头文件一般在 /usr/local/include.
  • Chemin de la bibliothèque : les bibliothèques dynamiques du système se trouvent souvent à l'adresse /usr/lib 和 /lib,静态库通常也会放在这里或者 /usr/local/lib.

Définir le chemin manuellement

Chemin du compilateur

Changer la variable d'environnement pour le chemin du compilateur n'est généralement pas nécessaire puisque /usr/bin 应该已经在你的 PATH 环境变量中了。如果你需要使用不同的编译器,你可以直接使用其完整路径或者修改 PATH devrait déjà être dans vos variables d'environnement

. Si vous devez utiliser un autre compilateur, vous pouvez directement utiliser son chemin complet ou modifier la variable d'environnement

pour qu'elle pointe vers votre compilateur, par exemple : PATH

export PATH=/path/to/your/compiler:$PATH
Copier après la connexion

Cela ajoutera le chemin que vous spécifiez avant le

existant afin que le système recherchera d'abord le fichier exécutable ici. Configurer le compilateur croisé

J'ai besoin de compiler des programmes d'architecture ARM sur Ubuntu, en utilisant la chaîne d'outils fournie par Marvell. Cette chaîne d'outils contient gcc et d'autres outils pour la compilation croisée de programmes d'architecture ARM, tous avec le même préfixe. Comment compiler de manière croisée des programmes exécutables de différents systèmes sur le serveur Ubuntu ?

arm编译:这样设置前缀后就可以使用交叉编译器
export CROSS_COMPILE=/home/zheng/marvell-tools-12006.0/bin/aarch64-marvell-linux-gnu-

使用环境变量进行编译:

${CROSS_COMPILE}gcc-o hello_arm hello_arm.c
Copier après la connexion

Comment compiler de manière croisée des programmes exécutables de différents systèmes sur le serveur Ubuntu ?

Voir l'architecture du système du programme exécutable

Ensuite, exécutez respectivement ces deux programmes : Comment compiler de manière croisée des programmes exécutables de différents systèmes sur le serveur Ubuntu ?

Architecture système actuelle : uname -mComment compiler de manière croisée des programmes exécutables de différents systèmes sur le serveur Ubuntu ?

gcc是会按照系统默认的PATH路径去查找编译时需要的相应的工具组件

Généralement

. 如果都把这些工具链的路径加到系统的环境变量PATH中则会产生冲突

Donc, si vous souhaitez compiler des programmes d'architectures différentes, vous avez besoin de plusieurs ensembles de chaînes d'outils.

L'outil portant le même nom dans le chemin précédent sera utilisé en premier. Par exemple, le PATH est défini sur : 那么前面的就会覆盖后面的,每次执行都会优先使用最早匹配到的gcc工具.

export PATH=/path/arm_toolchain/bin:/usr/bin:/path/x86_toolchain/bin
Copier après la connexion

/path/arm_toolchain/bin et /usr/bin, /path/x86_toolchain/bin ont tous des outils nommés gcc,

.

Inconvénients : les chaînes d'outils de compilation de différentes architectures ne peuvent pas être spécifiées dynamiquement et la variable d'environnement PATH doit être fréquemment modifiée. 给每个工具链指定相应的环境变量

Méthode d'amélioration :

, afin que les différents compilateurs puissent être distingués dynamiquement.

🎜Cette méthode convient pour changer temporairement de chaîne d'outils et compiler des programmes avec des architectures différentes. S'il s'agit d'un gros programme C, le chemin d'accès au compilateur est généralement spécifié dans le fichier de configuration, puis construit à l'aide de make, meson ou d'autres outils de construction. 🎜

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)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
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)

Comment utiliser la valeur absolue en C++ Comment utiliser la valeur absolue en C++ May 06, 2024 pm 06:15 PM

Il existe deux manières d'obtenir des valeurs absolues en C++ : 1. Utilisez la fonction intégrée abs() pour obtenir la valeur absolue d'un type entier ou à virgule flottante 2. Utilisez la fonction générique std::abs() pour ; obtenir diverses valeurs absolues prises en charge. Fonctionne sur les valeurs absolues des types de données.

Comment utiliser std :: en C++ Comment utiliser std :: en C++ May 09, 2024 am 03:45 AM

std est l'espace de noms en C++ qui contient les composants de la bibliothèque standard. Pour utiliser std, utilisez l'instruction "using namespace std;". L'utilisation de symboles directement à partir de l'espace de noms std peut simplifier votre code, mais n'est recommandée que lorsque cela est nécessaire pour éviter la pollution de l'espace de noms.

Que signifie premier en C++ Que signifie premier en C++ May 07, 2024 pm 11:33 PM

prime est un mot-clé en C++, indiquant le type de nombre premier, qui ne peut être divisé que par 1 et lui-même. Il est utilisé comme type booléen pour indiquer si la valeur donnée est un nombre premier. S'il s'agit d'un nombre premier, c'est le cas. vrai, sinon c'est faux.

Que signifie fabs en C++ Que signifie fabs en C++ May 08, 2024 am 01:15 AM

La fonction fabs() est une fonction mathématique en C++ qui calcule la valeur absolue d'un nombre à virgule flottante, supprime le signe négatif et renvoie une valeur positive. Il accepte un paramètre à virgule flottante et renvoie une valeur absolue de type double. Par exemple, fabs(-5.5) renvoie 5,5. Cette fonction fonctionne avec des nombres à virgule flottante, dont la précision est affectée par le matériel sous-jacent.

_utilisation complexe en langage C _utilisation complexe en langage C May 08, 2024 pm 01:27 PM

Le type complexe est utilisé pour représenter des nombres complexes en langage C, y compris des parties réelles et imaginaires. Sa forme d'initialisation est complex_number = 3.14 + 2.71i, la partie réelle est accessible via creal(complex_number) et la partie imaginaire est accessible via cimag(complex_number). Ce type prend en charge les opérations mathématiques courantes telles que l'addition, la soustraction, la multiplication, la division et le modulo. De plus, un ensemble de fonctions permettant de travailler avec des nombres complexes est fourni, telles que cpow, csqrt, cexp et csin.

Que signifie la configuration en Java ? Que signifie la configuration en Java ? May 07, 2024 am 02:39 AM

Config représente les informations de configuration en Java et est utilisé pour ajuster le comportement de l'application. Il est généralement stocké dans des fichiers ou des bases de données externes et peut être géré via Java Properties, PropertyResourceBundle, Java Configuration Framework ou des bibliothèques tierces. Ses avantages incluent le découplage et la flexibilité. sensibilisation à l'environnement, gérabilité, évolutivité.

Que signifie min en C++ Que signifie min en C++ May 08, 2024 am 12:51 AM

La fonction min en C++ renvoie le minimum de plusieurs valeurs. La syntaxe est : min(a, b), où a et b sont les valeurs à comparer. Vous pouvez également spécifier une fonction de comparaison pour prendre en charge les types qui ne prennent pas en charge l'opérateur <. C++20 a introduit la fonction std::clamp, qui gère le minimum de trois valeurs ou plus.

Comment calculer la valeur absolue en C++ Comment calculer la valeur absolue en C++ May 06, 2024 pm 06:21 PM

Il existe trois façons de trouver la valeur absolue en C++ : À l’aide de la fonction abs(), vous pouvez calculer la valeur absolue de n’importe quel type de nombre. À l'aide de la fonction std::abs(), vous pouvez calculer la valeur absolue d'entiers, de nombres à virgule flottante et de nombres complexes. Calcul manuel de valeurs absolues, adapté aux entiers simples.

See all articles