"-fpermissive" und "include" funktionieren nicht in Linux c Compiler

ShiraOzeri 07/30/2017. 1 answers, 44 views
android android c linux jenkins android-ndk android-ndk

Ich benutze Jenkins, um ein großes Projekt zu integrieren.

Wenn ich das Projekt in Jenkins auf Windows-Meachine baue, ist der Build erfolgreich.

Aber wenn ich das gleiche Projekt in jenkins auf linux meachine erstelle, ist der Build fehlgeschlagen.

Ich bekomme eine Menge Fehler, so:

cc1: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C 

und Problem mit dem Namen der Datei:

In file included from /var/lib/jenkins/workspace/mt-android-sdk-new/library/src/main/cpp/iprs_audio/iprs_audio_funcs.h:10:0,
                   from /var/lib/jenkins/workspace/mt-android-sdk-new/library/src/main/cpp/iprs_audio/iprs_audio_funcs.c:7:
  /var/lib/jenkins/workspace/mt-android-sdk-new/library/src/main/cpp/./iprs_audio/iprs_audio.h:15:40: fatal error: iprs_audio/iprs_audio_defs.h: No such file or directory
   #include                                           ^ 

Der Name der Datei lautet: Iprs_audio_defs.h (Großbuchstabe)

In Windows spielt der Unterschied zwischen Buchstaben keine Rolle, aber in Linux habe ich diesen Fehler bekommen. Ich kann die Dateien nicht umbenennen, weil dies ein großes Projekt ist und meine Verantwortung nur Jenkins ist

Irgendeine Hilfe?

4 Comments
Downvoter 07/30/2017
"In Windows spielt der Unterschied zwischen Buchstaben keine Rolle" Der Unterschied zwischen welchen Buchstaben genau? Was sind Ihre Compiler unter Windows bzw. Linux?
Michael 07/30/2017
"Ich kann die Dateien nicht umbenennen, weil dies ein großes Projekt ist und meine Verantwortung nur Jenkins ist." Sagen Sie den Entwicklern, dass sie das beheben sollen.
ShiraOzeri 07/30/2017
Vielen Dank für die Antwort! @Downvoter Ich überprüfe das in meinem Linux (CentOS) und mein Compiler ist: gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11) .aber in Windows weiß ich nicht, was mein Compiler ist. Ich überprüfe die Antwort dafür, aber nicht gefunden .. das Projekt auf Android Studio mit AC-Datei, aber ich habe auch Visual Studio 2015 auf meinem Kopierer. Entschuldigung für die Verwirrung ..
Jonathan Leffler 07/30/2017
Windows hat ein Dateisystem, bei dem die Groß- und Kleinschreibung nicht beachtet wird (so auch macOS); Linux unterscheidet zwischen Groß- und Kleinschreibung. Sie müssen den Pfad für den Header genau unter Linux buchstabieren, während Sie unter Windows schlampig sein können.

1 Answers


Dan Albert 08/10/2017.

Ich kann die Dateien nicht umbenennen, weil dies ein großes Projekt ist und meine Verantwortung nur Jenkins ist

Leider ist dies die einzige Option. Linux unterscheidet zwischen Groß- und Kleinschreibung.

4 comments
ShiraOzeri 08/30/2017
Danke, gibt es noch mehr Unterschiede? Vielleicht mit NULL? Ich habe die Buchstaben repariert ... aber es läuft immernoch nur unter Windows und nicht unter Linux
Dan Albert 08/30/2017
NULL ist keine Datei. C / C ++ ist bereits Groß-und Kleinschreibung. Die Groß- und Kleinschreibung von Dateinamen ist der Unterschied.
ShiraOzeri 08/31/2017
Aber selbst nachdem ich die Groß- / Kleinschreibung korrigiert habe, fällt der Build. selbst wenn ich das gleiche Projekt auf Windows-Rechner baue, ist es erfolgreich. Aber mit der Linux-Maschine (CentOS) gescheitert.) .Der Code wird kompiliert, startet dann die Tests aus dem Projekt und fällt dann. Der Fehler: Der Test konnte nicht vollständig ausgeführt werden. Grund: "Der Instrumentationslauf ist aufgrund von 'java.lang.IllegalArgumentException' fehlgeschlagen."
Dan Albert 08/31/2017
Klingt wie ein anderes Problem und eines, das nicht NDK verwandt ist. Sie werden wahrscheinlich eine neue Frage zu diesem Problem stellen, aber eine schnelle Google-Suche nach diesem Fehler findet: stackoverflow.com/questions/22085760/ ...

Related questions

Hot questions

Language

Popular Tags