2014-03-06 10 views
5

Ich benutze eine Open-Source-Rendering-Bibliothek (Ogre3D), die eine Abhängigkeit von Zlib hat.Wie baue ich zlib für arm64

In XCode5 habe ich festgestellt, dass zlib beim Erstellen für iOS nicht erstellt, wenn 64-Bit (Arm64) -Architektur durch ARCHS-Einstellung angezeigt wird.

Ich bekomme Fehler über "implizite Funktionsdeklaration" in Bezug auf LSEEK Makro, read und write Funktionen. Ich sah LSEEK in gzlib.c up:

#if defined(_WIN32) && !defined(__BORLANDC__) 
# define LSEEK _lseeki64 
#else 
#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 
# define LSEEK lseek64 
#else 
# define LSEEK lseek 
#endif 
#endif 

Meine Vermutung ist hier etwas falsch ist, aber ich weiß nicht, was. Und wie für read() und write() habe ich keine Ahnung.

+0

Wir verwenden die offizielle * zlib * -Bibliothek (Version 1.2.8 wie gestern), aber wir haben eine modifizierte 'CMakeList.txt'-Datei, mit vielen gelöschten Dingen. Vergleichen Sie vielleicht unseren mit dem aus der offiziellen * zlib * -Bibliothek, um zu prüfen, ob es einige obligatorische Dinge gibt, damit er auf arm64 kompiliert werden kann, die wir hinzufügen müssen. –

+0

VON "Wir" meinst du Ogre3D, richtig? Ich wusste nicht, dass angepasste Versionen verwendet wurden. –

+1

Ja, mit '* we *' meine ich Ogre3D (oder genauer gesagt das Ogre3D Entwicklerteam, zu dem ich gehört habe). Sollte das deutlicher gemacht haben, sorry. Nochmal: Der Quellcode ist die offizielle Version, nur die CMakeList.txt ist anders. –

Antwort

1

Die einfachste Lösung in diesem Szenario ist nicht zlib selbst zu bauen, da es bereits vorkompiliert mit dem iOS SDK (auch für arm64) kommt.

Diese latest commit behebt es auch im offiziellen Ogre-Abhängigkeiten-Repository.

Davon abgesehen, gibt es diese andere Option aus this Ogre3D thread:

Mit ARCHS = ARCHS_STANDARD_INCLUDING_64_BIT, Projekte wie ZLIP versagt wurden. Als ich das zu ARCHS_STANDARD_32_64_BIT änderte, bauten sie OK. Ich habe entdeckt, dass das erstere zu "armv7 armv7s arm64" auswertet, während letzteres zur Zeit "armv7 armv7s" auswertet. Also ich denke, Zlip wird nicht für Arm64 bauen.

Das würde bedeuten, dass Ogre3D Teile für 64-Bit kompiliert werden, wo, wie einige Abhängigkeiten wie zlib Aufenthalt 32-Bit.

+0

Ich denke, das beschreibt nur das gleiche Problem ... es baut nicht für arm64. Während _nicht_ für arm64 eine Option ist, führen 32-Bit-Apps zu zusätzlichen Kosten für 64-Bit-iOS und es scheint keine langfristige Lösung zu sein! –

+0

Ich sehe und stimme zu. Sehen Sie sich diese Antwort dann an. Vielleicht fügt das '#include ' das Problem hinzu: http://stackoverflow.com/a/20143790/1947205 –

10

Versuchen Sie eine #include <unistd.h> in gzguts.h hinzufügen.

+0

löste mein Problem. Vielen Dank. – icethawless

+0

Funktioniert auch, wenn Sie Probleme haben, zlib für OpenCV3.1.0 zu kompilieren. Vielen Dank. – LiveMynd

Verwandte Themen