In diesem Artikel werde ich das Wissen über das Erstellen von zwei Programmiersprachen, C ++ und Java, organisieren. Insbesondere werden wir die "grundlegende Erstellungsmethode", die "Verwendung der gemeinsam genutzten Bibliothek" und das "Erstellungswerkzeug" in jeder Sprache organisieren. Wenn zu diesem Zeitpunkt ein Unterschied zwischen Windows und Linux besteht, wird dieser Punkt ebenfalls erwähnt.
Der Zweck der Veröffentlichung dieses Artikels besteht darin, das Wissen durch das Poster selbst zu organisieren. Der Inhalt kann Fehler enthalten. Wenn Sie Fehler finden, weisen Sie diese bitte in den Kommentaren darauf hin.
In diesem Abschnitt werden die grundlegenden Methoden zum Erstellen über die Befehlszeile zusammengefasst. Beschrieben als "build = compile + link".
C++ Angenommen, Ihr Projekt besteht aus drei Dateien: main.cpp, hoge.cpp und hoge.h. Kompilieren
g++ -c main.cpp hoge.cpp
Der Link ist
g++ main.o hoge.o
Dies kann mit dem Befehl erfolgen, und eine ausführbare Datei (a.out unter Linux, a.exe unter Windows) wird generiert. -c ist eine Option "Nur kompilieren". Wenn Sie diese Option weglassen, können Sie sogar sofort eine ausführbare Datei generieren.
g++ main.cpp hoge.cpp
Java Angenommen, Ihr Projekt besteht aus zwei Dateien, Main.java und Hoge.java. Kompilieren
javac Main.java
Sie können dies mit dem Befehl tun, der die Dateien Main.class und Hoge.class generiert. Abhängigkeiten werden automatisch aufgelöst, sodass Sie Hoge.java nicht als Argument hinzufügen müssen. Da die Verknüpfung zur Laufzeit erfolgt, muss keine explizite Verknüpfung mit dem Befehl hergestellt werden. Ausführung
java Main
Dies geschieht mit dem Befehl.
Wir werden erklären, wie die gemeinsam genutzte Bibliothek am Beispiel von OpenCV verwendet wird. Der einzige Grund für die Verwendung von OpenCV als Beispiel ist, dass es sich um eine Bibliothek handelt, die mit Postern vertraut ist. Wenn Sie also nicht mit OpenCV vertraut sind, ersetzen Sie sie bitte durch eine andere Bibliothek und lesen Sie sie.
C++(Linux) Geben Sie den Include-Pfad, den Bibliothekspfad und die gemeinsam genutzte Bibliotheksdatei mit g ++ - Optionen an. Wenn beispielsweise der Include-Pfad: / usr / local / include / opencv4, der Bibliothekspfad: / usr / local / lib und die gemeinsam genutzte Bibliotheksdatei: libopencv_core.so wie folgt lauten.
g++ main.cpp -I/usr/local/include/opencv4 -L/usr/local/lib -lopencv_core
C++(Windows) Geben Sie unter Windows die Importbibliothek (.lib-Datei) mit der Option -l an. Wenn der Name der Importbibliotheksdatei opencv_world420.lib lautet, erstellen Sie ihn mit dem folgenden Befehl.
g++ main.cpp -IC:/opencv/build/include -LC:/opencv/build/x64/lib -lopencv_world420
Zur Laufzeit müssen Sie den Pfad zur DLL-Datei (gemeinsam genutzte Bibliothek selbst) übergeben, die mit der LIB-Datei gekoppelt ist. Für die Beziehung zwischen LIB-Dateien und DLL-Dateien können die folgenden Websites hilfreich sein. http://exlight.net/devel/windows/dll/windll.html
Java(Linux) In Java spielt die JAR-Datei eine ähnliche Rolle wie die obige Importbibliothek. Geben Sie daher die JAR-Datei im Klassenpfad an und erstellen Sie sie wie unten gezeigt.
javac -cp /usr/local/share/java/opencv4/opencv-430.jar Main.java
Zur Laufzeit müssen Sie dann den Pfad zur .so-Datei, die den Hauptteil der gemeinsam genutzten Bibliothek darstellt, als java.library.path angeben. (Ich werde die Erklärung weglassen, aber Sie müssen die .so-Datei mit der Funktion System.loadLibrary auch auf den Quellcode laden.) Außerdem ist der Klassenpfad zum Zeitpunkt der Ausführung erforderlich, und der Pfad (.) Der Klassendatei, die Sie ausführen möchten, muss ebenfalls angegeben werden.
java -cp .:/usr/local/share/java/opencv4/opencv-430.jar -Djava.library.path=/usr/local/share/java/opencv4 Main
Einzelheiten finden Sie auf der folgenden Seite. https://stackoverflow.com/questions/28727766/how-to-add-an-external-library-opencv-jar-file-to-the-java-build-path-from-th
Java(Windows) Laden Sie unter Windows die DLL-Datei anstelle der SO-Datei, und der Klassenpfadbegrenzer lautet ";" anstelle von ":".
javac -cp C:/opencv/build/java/opencv-430.jar Main.java
java -cp .;C:/opencv/build/java/opencv-420.jar -Djava.library.path=C:/opencv/build/java/x64 Main
In diesem Abschnitt werden CMake, ein Tool zum Erstellen von C-Sprachen, und Gradle, ein Java-Build-Tool, vorgestellt.
CMake Bevor wir CMake erklären, berühren wir make. make ist ein Pionier der Build-Tools. Sie können Builds automatisieren, indem Sie Build-Regeln in Ihr Makefile schreiben.
CMake wird häufig in der Prozedur CMake → make → make install verwendet, wenn der Quellcode der C-Sprache installiert wird. In jedem dieser Schritte werden die folgenden Aufgaben ausgeführt.
Im Beispiel mit OpenCV enthält CMakeLists.txt den folgenden Inhalt. (Wenn Sie pkg_config nicht verwenden)
cmake_minimum_required(VERSION 3.10)
project(Main)
add_executable(Main main.cpp)
target_include_directories(Main
PRIVATE
/usr/local/include/opencv4
)
target_link_libraries(Main
PRIVATE
/usr/local/lib/libopencv_core.so
)
Gradle Was Gradle betrifft, werde ich nur den Inhalt von build.gradle als mein eigenes Memo einfügen.
apply plugin: 'java'
dependencies {
compile files("/usr/local/share/java/opencv4/opencv-430.jar")
}
In diesem Artikel habe ich das Wissen über das Erstellen von zwei Programmiersprachen, C ++ und Java, organisiert. Ursprünglich wollte ich auf den in der IDE versteckten Erstellungsprozess eingehen, bin mir aber nicht sicher, ob er noch erforderlich ist, und möchte hier enden. Infolgedessen ähnelt der Inhalt dem Artikel vor 20 Jahren, aber ich würde es begrüßen, wenn Sie darauf verweisen könnten.
Recommended Posts