Kla*_*aus 16 gcc jailbreak ios
这是一个非常简单的Objective-C控制台应用程序:
#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;
}
Run Code Online (Sandbox Code Playgroud)
我gcc main.m -o main -ObjC -framework Foundation -framework CoreLocation在Mac上编译它.
我的Mac上也安装了iOS SDK.如何修改此命令以在我的计算机上编译相同的代码,以便在(越狱)iOS设备上使用?
然后,我可以通过ssh传输可执行文件并使用它进行签名ldid.
rad*_*iel 18
对于简单的情况,这可能足够好:
gcc -o output -Wall -std=c99 source.m -framework Foundation -lobjc
Run Code Online (Sandbox Code Playgroud)
更新:
此命令不适用于iOS命令行应用程序 - 必须正确设置arch.我目前没有iOS开发环境; 可能是-march标志会有所帮助.
看到接受的答案.
假设您不习惯陈旧的旧 GCC,故意在我的项目中触发错误,以便进入 Xcode 将显示使用的命令行显示以下编译内容的位置:
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang -x Objective-c -arch armv6 -fmessage-length=0 -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics -parseable-fixits -std=gnu99 -Wno-trigraphs -fpascal-strings -O0 -Wmissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -DDEBUG=1 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -gdwarf-2 -mthumb "-DIBOutlet=属性((iboutlet))" "-DIBOutletCollection(ClassName)=属性((iboutletcollection(ClassName)) )" "-DIBAction=void)属性((ibaction)" -miphoneos-version-min=3.2 -iquote [簿记文件] -I[标头列表] -iquote [更多标头] -I[包含路径] -fpch-preprocess -F[指向调试文件目录的指针] -include [我的前缀标头] -c AppDelegate.m -o AppDelegate.o
如果您拒绝使用 Xcode,那么我想您至少可以删除有关 Interface Builder 出口的内容。在我的项目中,为 armv6 而不是 v7 构建可能是一个错误。
然后,链接:
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -L[适当的东西] -F[适当的东西] -filelist [a .LinkFileList] -dead_strip -miphoneos-version-min=3.2 -framework SystemConfiguration -framework UIKit -framework Foundation -framework CoreGraphics -o [适当的东西]
.LinkedFileList 文件似乎只是一个目标文件列表,每行一个。Xcode 已将每个路径的完整路径放在那里,但我猜相对路径是可以接受的。
我知道这不是完整的答案,但希望它有帮助吗?