stdlibc not mac headers found for compiler ios gcc jailbreak

ios - not - gcc compiler mac



Compile una aplicación de línea de comandos iOS Objective-C a través de gcc en mac (4)

¿Por qué no usar xcodebuild lugar de llamar directamente a gcc ?

Aquí hay una aplicación de consola Objective-C muy simple:

#import <Foundation/Foundation.h> #import <CoreLocation/CoreLocation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; CLLocationManager *locationManager = [[CLLocationManager alloc] init]; NSLog(@"Hello world!"); [pool drain]; return 0; }

Lo compilo con gcc main.m -o main -ObjC -framework Foundation -framework CoreLocation en mi Mac.

También tengo el SDK de iOS instalado en mi mac. ¿Cómo puedo modificar este comando para compilar el mismo código, en mi computadora , para usarlo en un dispositivo iOS (con jailbreak) ?

Luego podría transferir el ejecutable a través de ssh y firmarlo con ldid .


Para casos simples esto podría ser lo suficientemente bueno:

gcc -o output -Wall -std=c99 source.m -framework Foundation -lobjc

Actualizar:

Este comando no funciona para una aplicación de línea de comandos de iOS; el arco debe configurarse correctamente. No tengo ningún entorno de desarrollo de iOS en la actualidad; probablemente la bandera de -march ayudaría.

Ver la respuesta aceptada.


Para compilar el código iOS en su mac, necesita usar compilador cruzado, es decir, un compilador que se ejecute en una plataforma Intel y sea capaz de generar código binario ARM.

Xcode proporciona tal compilador cruzado. Se encuentra en (suponiendo que está utilizando Xcode 4.3 distribuido desde App Store)

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2

Para un tipo de programa simple, "hola mundo", estoy compilando usando

alias c="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2" c -o hello hello.c -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/


Suponiendo que no está casado con el antiguo GCC, desencadenando deliberadamente errores en mi proyecto para llegar a una posición en la que Xcode revelará la línea de comandos utilizada y reveló lo siguiente para la compilación:

/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang -x object-c -arch armv6 -fmessage-length = 0 -fdiagnostics-print-source-range-info -fdiagnostics-show-category = id -fdiagnostics -pasables-fixits -std = gnu99 -Wno-trigraphs -fpascal-strings -O0 -Whissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parámetro -Wunused-variable -Wunused-value -DDEBUG = 1 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -gdwarf-2 -mthumb "-DIBOutlet = atributo ((iboutlet))" "-DIBOutletCollection (ClassName) = atributo ((iboutletcollection) (clase) ) "" -DIBAction = void) atributo ((ibaction) "-miphoneos-version-min = 3.2 -iquote [un archivo de contabilidad] -I [una lista de encabezados] -iquote [más encabezados] -I [una ruta de inclusión] -fpch-preprocess -F [puntero al directorio para los archivos de depuración] -include [el encabezado de mi prefijo] -c AppDelegate.m -o AppDelegate.o

Si está declinando el uso de Xcode, entonces supongo que puede cortar al menos las cosas sobre las salidas de Interface Builder. Y la creación de armv6 en lugar de v7 es probablemente un error en mi proyecto.

Y luego, para enlazar:

/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -L [algo apropiado] ] -filelist [a .LinkFileList] -dead_strip -miphoneos-version-min = 3.2 -framework SystemConfiguration -framework UIKit -framework Foundation -framework CoreGraphics -o [algo apropiado]

El archivo .LinkedFileList parece ser solo una lista de archivos de objetos, uno por línea. Xcode ha puesto la ruta completa a cada uno allí, aunque creo que las rutas relativas son aceptables.

Aprecio que esta no sea una respuesta completa, pero espero que ayude?