2017-08-17 13 views
-2

Wie kompiliert Cross-Plattform ausführbar mit C++?Wie kompiliert Cross-Plattform ausführbar mit C++

Sollte ich cpack oder docker verwenden?

Es scheint, dass es eine große Abhängigkeit von Bibliotheken und Hardware gibt.

Zum Beispiel kompilierte ich eine ausführbare Datei in meinem Computer, und ich möchte es in einem anderen Computer ausführen. Ich habe meine exec mit opencv verbunden und ein bisschen cuda programmiert. Ich möchte mein Programm auf Windows oder Mac ausführen.

Und der Zielcomputer möglicherweise unterschiedliche Rechenleistung.

Wie erreicht man das?

+0

Die Kreuzkompilierung hängt normalerweise vom Compiler und nicht vom Build-Dienstprogramm ab. In unserem Shop verwenden wir zum Beispiel den IAR-Compiler, um Code für eine ARM 9-Plattform (Embedded System) zu entwickeln. Die GNU-Compiler-Reihe enthält Compiler, die Code für andere Plattformen generieren können. Wir haben sogar einen gemeinsamen Quellcode, der für Windows und das eingebettete System kompiliert wird. –

+0

Also ist es schwer auf verschiedene Computer zu verteilen? – mxmxlwlw

+0

Hängt von Ihrer Definition von "hart" ab. In meinem Shop erstellen wir die IDE und laden sie dann mit einem JTAG-Debugger auf das eingebettete System hoch. Nicht schwierig. Einige Läden haben Macs und Linux Maschinen und bauen auf diesen Maschinen auf. Wieder nicht schwer. Einige Leute verwenden eine Option mit dem GNU-Compiler, um eine andere Zielplattform anzugeben und dann zu bauen. Nicht schwer. –

Antwort

1

C++ Quellcode kann Cross-Plattform sein, aber kompilierte Binärdateien sind sehr viel Plattform spezifische. Um das Programm auf Mac, Linux und Windows auszuführen, müssen Sie es 3 Mal kompilieren - eins auf jeder Plattform und dann 3 verschiedene ausführbare Dateien verteilen (das gleiche gilt für alle Bibliotheken, von denen das Programm abhängt).

+0

Dies ist eine Grundlage für die Verteilung von Quellcode anstelle von Bibliotheken (insbesondere der * nix-Familien). –

+0

Also ist es schwierig, auf verschiedene Computer zu verteilen? – mxmxlwlw

+0

Hängt von Ihrer Definition von * hard * ab und wie Sie verteilen möchten. –