Ich habe den ursprünglichen Code, der unter gcc in Windows und Linux kompiliert werden soll. Es funktioniert gut unter Cygwin. Jetzt, wenn ich versuche, für iOSMakro posix_c_source
echo $OSTYPE
darwin14
zu kompilieren, scheint alles in Ordnung und ein Build ist erfolgreich erhalten. Wenn ich jedoch versuchte, die CUI-App auszuführen, wird eine Meldung Segmentierungsfehler 11 angezeigt.
Nach ein paar Tagen Suche im Internet, durch Zufall habe ich diese link gefunden.
Als Ergebnis habe ich die folgende Änderung in einer der * .c Datei
-#define _POSIX_C_SOURCE 199309
+#define _POSIX_C_SOURCE 199506
und dem neuen Build funktioniert gut. Obwohl ich kein Programmierer bin, frage ich mich, was zwischen diesen beiden Makros so signifikant anders wäre? Können Sie etwas dazu sagen, warum solch ein Wandel so wichtig wird?
Wenn Sie einen Absturz wie Segmentierungsfehler erhalten, sollte Ihre erste Aktion nicht dazu, spezielle Makros neu zu definieren. Stattdessen sollte es sein, die Anwendung zu debuggen, den Ort und die Ursache des Absturzes zu finden. Nur weil es * scheint * zu funktionieren, ist es nicht garantiert, dass das zugrundeliegende Problem tatsächlich behoben ist. Möglicherweise haben Sie weiterhin das undefinierte Verhalten im Code, und der Absturz (oder ein anderes unerwartetes Verhalten) kommt möglicherweise zurück, wenn Sie es am wenigsten erwarten. –
Ist Ihr Code multi-threaded? Das könnte es erklären, weil '199506' Threads eingeführt hat (und ohne sie enthält Ihre C-Bibliothek möglicherweise keine Thread-Sicherheitskonstrukte). Ansonsten ist es schwer zu sagen, ohne einen Code anzusehen. –
@Joachim: Danke für Ihren Vorschlag. Ich bin mir bewusst, dass meine Herangehensweise keine professionelle ist. Leider sind meine Debugging-Fähigkeiten fast nicht vorhanden. – AjanO