Ich betreibe Ubuntu, und ich kann ICU bauen
Ich habe eingeschlossen:
%Vor%Dies ist meine Build-Methode für ICU:
%Vor%Ich verlinke dann zu
%Vor%und versuche,
zu kompilieren %Vor%, aber erhalte den Fehler
%Vor%Ich habe hier in SO einen weiteren Beitrag bezüglich des gleichen Problems gefunden, aber wenn ich die angegebenen Schritte befolge, behebt es mein Problem nicht und kann eine andere Version sein.
EDIT: Dies ist die Ausgabe von der IDE beim Erstellen des Projekts
%Vor%Ich bemerke, dass Ihre g ++ Zeile nicht auf /usr/local/lib/libicuuca.a zeigt, wo Sie sagen, dass Sie icu installiert haben. Es ist offensichtlich kompilieren gegen die Header OK, aber existiert die statische Bibliothek in dem Pfad, den Sie verwenden ("/home/user/myProject/icu/libicuuc.a")?
Beim Ausführen:
%Vor%Hast du die Warnung beachtet?:
%Vor%Wenn nicht, dann tu es jetzt.
Als nächstes modifizieren Sie Ihr Testprogramm vor allem anderen auf #include <unicode/uconfig.h>
,
z.B.
main.cpp
%Vor% Die Datei wird kompiliert und mit libicuuc.a
verknüpft.
Sie können, wenn Sie möchten, sicherstellen, dass Vorsatzköpfe wie unicode/uconfig.h
und unicode/platform.h
werden automatisch vom Compiler zuvor eingefügt
alles andere unter Verwendung eines Pre-Include-Headers, z. B.
icu_preinc.h
%Vor%, die Sie an GCC übergeben oder mit der Option klingeln:
%Vor% Sie können diese Option in Ihr CPPFLAGS
setzen, wenn Sie ein make
-basiertes Build-System verwenden.
Bei dem obigen Spielzeugprogramm genügt es, U_DISABLE_RENAMING=1
auf der Kommandozeile zu definieren, ohne <unicode/uconfig.h>
Ich denke, das Problem liegt in der g ++ -Syntax:
%Vor%Sie sagen, dass Sie myProject mit der Objektdatei main.o und der Objektdatei libicuuca.a erstellen. Letzteres ist jedoch keine Objektdatei, sondern eine statische Bibliothek. Ich denke du solltest die g ++ Zeile ändern zu:
%Vor% -L/home/user/myProject/icu/
weist den Linker an, in / home / user / myProject / icu / ordner nach Bibliotheken zu suchen, und -licuuc
teilt ihm eine Bibliothek namens libicuuca.a oder libicuuc.so