GCC with-gxx-include-dir ist auf den iOS 11.4-Simulator eingestellt

Ich versuche, https://github.com/zeromq/libzmq zu kompilieren , was erfordert, dass ich autoconfund dann ./configure. Vor ein paar Tagen hat es noch funktioniert, aber jetzt passiert folgendes:

checking for a BSD-compatible install... /usr/local/bin/ginstall -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/local/bin/gmkdir -p
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether UID '502' is supported by ustar format... yes
checking whether GID '20' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking whether make supports nested variables... (cached) yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... configure: error: in `/Users/rajiv/libzmq/libzmq-4.2.5':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details

config.logzeigt an:

configure:4489: checking whether we are cross compiling
configure:4497: gcc -o conftest    conftest.c  >&5
configure:4501: $? = 0
configure:4508: ./conftest
dyld: mach-o, but built for simulator (not macOS)
./configure: line 4510: 98877 Abort trap: 6           ./conftest$ac_cv_exeext
configure:4512: $? = 134

Nachdem ich eine Weile auf GitHub gesucht habe, scheint es, als ob etwas mit GCC nicht stimmt:

$ gcc -v

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.4.sdk/usr/include/c++/4.2.1

Apple LLVM version 9.1.0 (clang-902.0.39.2)

Target: x86_64-apple-darwin17.7.0

Thread model: posix

InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

includeEs scheint, als würde es das iOS 11.4 SDK versuchen . Wie kann ich es wieder auf den richtigen Pfad ändern und wie kam es zu dieser Änderung? Das einzige, was mir einfällt, ist, dass ich ein Update für die Xcode Command Line Tools installiert habe und möglicherweise autoconfmit Homebrew aktualisiert habe

Ich bezweifle, dass /usr/include/c++/4.2.1 das richtige Include ist, das für ein altes gcc ist - Apple liefert kein gcc mehr, aber es klingelt. Ich würde mir Portierungssysteme wie Macports oder Homebrew ansehen, um zu sehen, wie sie alle Änderungen verwalten, die dieser Build benötigt
Warum haben Sie ein Homebrew-Tag verwendet?
@Mark Ich hatte angenommen, dass dies das richtige Verzeichnis war, aber eigentlich möchte ich es nur in das Verzeichnis ändern, in dem es sein sollte. Ich werde die Frage entsprechend bearbeiten. Ich habe das Homebrew-Tag hinzugefügt, weil ich nicht sicher bin, ob Homebrew diese Änderung beeinflusst hat, aber ich werde es entfernen

Antworten (1)

Ich habe ein ähnliches Problem gesehen.

$ gcc -v
    Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.4.sdk/usr/include/c++/4.2.1

In meinem Fall führte diese Konfiguration zu Einbindungen wie #include <stdlib.h>dem Verweis auf die Bibliotheken der iOS/iPhone-Simulatorplattform und nicht auf die macOS-Bibliotheken. Dies führte dazu, dass ich beim Kompilieren Fehlermeldungen über die falsche Architektur erhielt.

Die einzige praktikable Lösung, die ich gefunden habe, war die Deinstallation von Xcode (Löschen der App aus /Applications) und die Deinstallation der Befehlszeilentools . Das und ein Neustart schienen dieses Problem in meinem Fall zu lösen.

Danke! Das hat bei mir funktioniert. Ich bin mir nicht sicher, was die Ursache war, vielleicht ein Xcode-Update