Wir haben ein großes Projekt mit mehreren Apps. Daher haben wir den gemeinsamen Code in ein einzelnes dynamisches Framework verschoben. Bis jetzt läuft es gut auf 64-Bit-Geräten, aber einen Absturz auf 32-Bit-Geräten wie folgt:
%Vor% Ein kleiner Hintergrund: Wir haben ffmpeg und einige andere fat-Bibliotheken, die gegen ARM64
, ARMv7
und x86_64
architectures kompiliert wurden, hinzugefügt. Wir hatten einige Textverschiebungsfehler, die durch Hinzufügen von -read_only_relocs suppress
zum Linker-Flag behoben wurden.
Wenn wir ffmpeg und verwandte Bibliotheken entfernen, funktioniert es auf 32-Bit-Geräten gut.
Ist jemand auf einen solchen Fehler gestoßen? Jeder Zeiger oder jede Hilfe würde sehr geschätzt werden.
Wir hatten dasselbe Problem, wenn wir "Dynamic Library" für den Mach-O-Typ in Ihrem Framework verwenden. Der Wechsel zu "Relocatable Object File" behob das Problem. Das Problem scheint bei der Verlagerung von Text innerhalb der Bibliotheken zu liegen.
Wie in weiteren Einzelheiten hier beschrieben: "Eine Textverschiebung ist das Ergebnis einer Referenz auf ein Objekt mit einer Variablenadresse zur Laufzeit unter Verwendung eines absoluten Adressierungsmodus. Die Befehlscodierung selbst enthält die Adresse und daher muss der ausführbare Text der Binärdatei so geändert werden, dass sie die korrekte Adresse enthält die tatsächlichen Ladeadressen zur Laufzeit berücksichtigen. "
FFMPEG verwendet Textumsetzungen und es war ein großes Problem auf Android M ( Ссылка )
Da sie in nächster Zeit nicht behoben werden, scheint "Relocatable Object File" die einzige Option zu sein.
Tags und Links ios xcode 32bit-64bit dynamic-library