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.
/usr/bin
. /usr/include
中,标准库的头文件一般在 /usr/local/include
. /usr/lib
和 /lib
,静态库通常也会放在这里或者 /usr/local/lib
. 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
pour qu'elle pointe vers votre compilateur, par exemple : PATH
export PATH=/path/to/your/compiler:$PATH
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.
arm编译:这样设置前缀后就可以使用交叉编译器 export CROSS_COMPILE=/home/zheng/marvell-tools-12006.0/bin/aarch64-marvell-linux-gnu- 使用环境变量进行编译: ${CROSS_COMPILE}gcc-o hello_arm hello_arm.c
Voir l'architecture du système du programme exécutable
Ensuite, exécutez respectivement ces deux programmes :
Architecture système actuelle : uname -m
gcc是会按照系统默认的PATH路径去查找编译时需要的相应的工具组件
. 如果都把这些工具链的路径加到系统的环境变量PATH中则会产生冲突
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
.
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. 给每个工具链指定相应的环境变量
, 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!