Inhaltsverzeichnis
编译器路径
设置交叉编译器" >设置交叉编译器
Heim Computer-Tutorials Computerwissen Wie kompiliere ich ausführbare Programme verschiedener Systeme auf einem Ubuntu-Server?

Wie kompiliere ich ausführbare Programme verschiedener Systeme auf einem Ubuntu-Server?

Mar 06, 2024 pm 01:34 PM
gcc 路径 Standardbibliothek usr

相信很多C程序员都有过这样的疑问,如果一台服务器有不同的gcc版本怎么办,它们之间会相互影响吗?

答案是会的,我们一般使用gcc编译源文件时,这个gcc是系统环境变量PATH中最开始找到的gcc。

如果要交叉编译不同系统的程序呢?这就需要多套的编译工具链了,分别使用对应的工具链编译目标系统的程序。

默认路径

  • 编译器路径:通常放置在 /usr/bin 目录下。
  • 头文件路径:系统级别的头文件通常放在 /usr/include 中,标准库的头文件一般在 /usr/local/include
  • 库路径:系统动态库往往位于 /usr/lib 和 /lib,静态库通常也会放在这里或者 /usr/local/lib

手动设置路径

编译器路径

更改编译器路径的环境变量通常不是必要的,因为 /usr/bin 应该已经在你的 PATH 环境变量中了。如果你需要使用不同的编译器,你可以直接使用其完整路径或者修改 PATH 环境变量来指向你的编译器,例如:

export PATH=/path/to/your/compiler:$PATH
Nach dem Login kopieren

这样会在现有的 PATH 前添加你指定的路径,使系统首先在此处寻找可执行文件。

设置交叉编译器

我需要在Ubuntu上编译ARM架构的程序,使用Marvell提供的工具链。这个工具链包含了用于交叉编译ARM架构程序的gcc和其他工具,它们都具有相同的前缀。

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

使用环境变量进行编译:

${CROSS_COMPILE}gcc-o hello_arm hello_arm.c
Nach dem Login kopieren

Wie kompiliere ich ausführbare Programme verschiedener Systeme auf einem Ubuntu-Server?

Wie kompiliere ich ausführbare Programme verschiedener Systeme auf einem Ubuntu-Server?查看可执行程序系统架构

然后分别执行一下这两个程序:

Wie kompiliere ich ausführbare Programme verschiedener Systeme auf einem Ubuntu-Server?

当前系统的架构:uname -m

Wie kompiliere ich ausführbare Programme verschiedener Systeme auf einem Ubuntu-Server?

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

所以如果要编译不同架构的程序,就需要有多套的工具链,如果都把这些工具链的路径加到系统的环境变量PATH中则会产生冲突,会优先使用前面路径中的同名工具,比如PATH设置为:

export PATH=/path/arm_toolchain/bin:/usr/bin:/path/x86_toolchain/bin
Nach dem Login kopieren

/path/arm_toolchain/bin和/usr/bin,/path/x86_toolchain/bin都有名称为gcc的工具,那么前面的就会覆盖后面的,每次执行都会优先使用最早匹配到的gcc工具

缺点:无法动态指定不同架构的编译工具链,需要频繁修改PATH环境变量。

改进方法:给每个工具链指定相应的环境变量,这样就可以动态区分不同的编译器。

这种办法适合临时切换工具链,编译不同架构的程序,如果是大型C程序一般是通过配置文件中指定了编译器的路径,然后使用make,或者meson等构建工具进行构建。

Das obige ist der detaillierte Inhalt vonWie kompiliere ich ausführbare Programme verschiedener Systeme auf einem Ubuntu-Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie einen absoluten Wert in C++ So verwenden Sie einen absoluten Wert in C++ May 06, 2024 pm 06:15 PM

Es gibt zwei Möglichkeiten, absolute Werte in C++ zu erhalten: 1. Verwenden Sie die integrierte Funktion abs(), um den absoluten Wert eines Ganzzahl- oder Gleitkommatyps zu erhalten. 2. Verwenden Sie die generische Funktion std::abs(), um Erhalten Sie verschiedene unterstützte absolute Werte. Arbeitet mit absoluten Werten von Datentypen.

So verwenden Sie std:: in C++ So verwenden Sie std:: in C++ May 09, 2024 am 03:45 AM

std ist der Namespace in C++, der Komponenten der Standardbibliothek enthält. Um std zu verwenden, verwenden Sie die Anweisung „using namespace std;“. Die direkte Verwendung von Symbolen aus dem std-Namespace kann Ihren Code vereinfachen, wird jedoch nur bei Bedarf empfohlen, um eine Verschmutzung des Namespace zu vermeiden.

So öffnen Sie ein Fenster in Python So öffnen Sie ein Fenster in Python May 05, 2024 pm 08:15 PM

Es gibt zwei Möglichkeiten, Popups in Python zu erstellen: Tkinter: Verwenden Sie die Tkinter-Bibliothek, um Tk- oder TopLevel-Widgets zu erstellen. Pyglet: Verwenden Sie die Pyglet-Bibliothek, um Fensterfenster zu erstellen.

Was bedeutet Fabs in C++? Was bedeutet Fabs in C++? May 08, 2024 am 01:15 AM

Die Funktion fabs() ist eine mathematische Funktion in C++, die den absoluten Wert einer Gleitkommazahl berechnet, das negative Vorzeichen entfernt und einen positiven Wert zurückgibt. Es akzeptiert einen Gleitkommaparameter und gibt einen absoluten Wert vom Typ Double zurück. Fabs(-5.5) gibt beispielsweise 5,5 zurück. Diese Funktion arbeitet mit Gleitkommazahlen, deren Genauigkeit von der zugrunde liegenden Hardware beeinflusst wird.

Was bedeutet Primzahl in C++? Was bedeutet Primzahl in C++? May 07, 2024 pm 11:33 PM

prime ist ein Schlüsselwort in C++, das den Primzahltyp angibt, der nur durch 1 geteilt werden kann. Es wird als boolescher Typ verwendet, um anzugeben, ob der angegebene Wert eine Primzahl ist wahr, andernfalls ist es falsch.

_komplexe Verwendung in C-Sprache _komplexe Verwendung in C-Sprache May 08, 2024 pm 01:27 PM

Der komplexe Typ wird zur Darstellung komplexer Zahlen in der C-Sprache verwendet, einschließlich Real- und Imaginärteilen. Seine Initialisierungsform ist complex_number = 3.14 + 2.71i, auf den Realteil kann über creal(complex_number) und auf den Imaginärteil über cimag(complex_number) zugegriffen werden. Dieser Typ unterstützt gängige mathematische Operationen wie Addition, Subtraktion, Multiplikation, Division und Modulo. Darüber hinaus wird eine Reihe von Funktionen zum Arbeiten mit komplexen Zahlen bereitgestellt, z. B. cpow, csqrt, cexp und csin.

Was bedeutet Konfiguration in Java? Was bedeutet Konfiguration in Java? May 07, 2024 am 02:39 AM

Config stellt Konfigurationsinformationen in Java dar und wird zum Anpassen des Anwendungsverhaltens verwendet. Es wird normalerweise in externen Dateien oder Datenbanken gespeichert und kann über Java Properties, PropertyResourceBundle oder Bibliotheken von Drittanbietern verwaltet werden. Umweltbewusstsein, Handhabbarkeit, Skalierbarkeit.

Was bedeutet min in C++? Was bedeutet min in C++? May 08, 2024 am 12:51 AM

Die min-Funktion in C++ gibt das Minimum mehrerer Werte zurück. Die Syntax lautet: min(a, b), wobei a und b die zu vergleichenden Werte sind. Sie können auch eine Vergleichsfunktion angeben, um Typen zu unterstützen, die den <-Operator nicht unterstützen. C++20 hat die Funktion std::clamp eingeführt, die mindestens drei oder mehr Werte verarbeitet.

See all articles