Wir erstellen eine große C ++ - Anwendung unter OS X Yosemite 10.10. Diese Anwendung basiert auf einer Reihe von Bibliotheken von Drittanbietern, die wir vor dem Erstellen unserer Anwendung mit Homebrew installieren. Unser Release-Skript nimmt alle Abhängigkeiten auf und nimmt sie in das endgültige Paket auf.

Einige unserer Benutzer berichteten, dass unsere Anwendung auf ihrem Mac nicht funktioniert hat. Zum Beispiel bekommt ein Benutzer, der macOS 10.12.6 auf einem 27-Zoll-iMac Ende 2012 ausführt llegal instruction: 4(alle Details hier ).

Es sieht so aus, als ob der Absturz in einer der von uns gebündelten Abhängigkeiten von Drittanbietern, OpenImageIO, auftritt, die mit den folgenden Befehlen auf dem Buildcomputer installiert wurde:

brew tap homebrew/science
brew install openimageio

brew info openimageio berichtet, dass es tatsächlich aus der Quelle gebaut wurde:

/usr/local/Cellar/openimageio/1.7.17_1 (66 files, 16.0MB) *
  Built from source on 2017-11-27 at 19:15:19

Ich vermute, dass Homebrew beim Kompilieren auf dem Build-Computer erweiterte x86-Befehlssätze aktiviert.

Hier ist die Homebrew-Formel für OpenImageIO:
https://github.com/Homebrew/homebrew-science/blob/master/openimageio.rb

Gibt es eine Möglichkeit herauszufinden, welche Flags oder welche Befehlszeilen Homebrew verwendet?

Gibt es alternativ eine Möglichkeit, die Standardflags von clang unter macOS global zu setzen?

François Beaune
quelle