I did it on Cygwin but it is written for Linux primarily and should work for you.
Code:cd ~; git clone https://github.com/tpoechtrager/osxcross; git clone https://github.com/AaronWallace/MacOSX_SDKs; cd MacOSX_SDKs; tar -cJf ../osxcross/tarballs/MacOSX10.7.sdk.tar.xz MacOSX10.7.sdk; cd ../osxcross; sudo tools/get_dependencies.sh;
This should make sure you've got the needed Linux packages. Note that I had to downgrade to LLVM 3.9.1 for it to work on Cygwin, but that might not be necessary on Linux.
Then just build it.
Code:./build.sh; #if this gets some LTO issues at link-time you can try with `DISABLE_LTO_SUPPORT=1 ./build.sh;` ./build_gcc.sh; #this is optional since you'll already have clang
Full documentation on the osxcross repo here:
https://github.com/tpoechtrager/osxcross/blob/master/README.md
If you're able to get that working in the next couple of days I'll release AIK v3.1 rapid fire with it included before I leave on holiday. :highfive:
Well done, toolchain created, but some errors in my kernel dump source code:
Code:
kernel_dump.c:167:13: warning: implicit declaration of function 'fopen64' is invalid in C99 [-Wimplicit-function-declaration]
FILE *fp = fopen64(filename, "rb");
^
kernel_dump.c:167:8: warning: incompatible integer to pointer conversion initializing 'FILE *' (aka 'struct __sFILE *') with an
expression of type 'int' [-Wint-conversion]
FILE *fp = fopen64(filename, "rb");
^ ~~~~~~~~~~~~~~~~~~~~~~~
kernel_dump.c:173:2: warning: implicit declaration of function 'fseeko64' is invalid in C99 [-Wimplicit-function-declaration]
fseeko64(fp, 0, SEEK_END);
^
kernel_dump.c:174:9: warning: implicit declaration of function 'ftello64' is invalid in C99 [-Wimplicit-function-declaration]
size = ftello64(fp);
^
kernel_dump.c:256:11: warning: incompatible integer to pointer conversion assigning to 'FILE *' (aka 'struct __sFILE *') from 'int'
[-Wint-conversion]
if ((sin = fopen64(filein, "rb")) == 0) {
^ ~~~~~~~~~~~~~~~~~~~~~
kernel_dump.c:349:13: warning: incompatible integer to pointer conversion assigning to 'FILE *' (aka 'struct __sFILE *') from 'int'
[-Wint-conversion]
if ((elf = fopen64(fileout, "wb")) == NULL) {
^ ~~~~~~~~~~~~~~~~~~~~~~
kernel_dump.c:677:12: warning: incompatible integer to pointer conversion assigning to 'FILE *' (aka 'struct __sFILE *') from 'int'
[-Wint-conversion]
if ((elf = fopen64(fileout, "wb")) == NULL) {
^ ~~~~~~~~~~~~~~~~~~~~~~
kernel_dump.c:720:14: warning: incompatible integer to pointer conversion assigning to 'FILE *' (aka 'struct __sFILE *') from 'int'
[-Wint-conversion]
if ((source = fopen64(source_file, "rb")) == NULL) {
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel_dump.c:725:14: warning: incompatible integer to pointer conversion assigning to 'FILE *' (aka 'struct __sFILE *') from 'int'
[-Wint-conversion]
if ((target = fopen64(target_file, "wb")) == NULL) {
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel_dump.c:770:5: warning: incompatible integer to pointer conversion assigning to 'FILE *' (aka 'struct __sFILE *') from 'int'
[-Wint-conversion]
fi = fopen64(in, "rb");
^ ~~~~~~~~~~~~~~~~~
kernel_dump.c:818:15: warning: incompatible integer to pointer conversion assigning to 'FILE *' (aka 'struct __sFILE *') from 'int'
[-Wint-conversion]
if ((fooff = fopen64(fnameoff, "wb")) != NULL) {
^ ~~~~~~~~~~~~~~~~~~~~~~~
kernel_dump.c:860:15: warning: incompatible integer to pointer conversion assigning to 'FILE *' (aka 'struct __sFILE *') from 'int'
[-Wint-conversion]
if ((fooff = fopen64(fnameoff, "wb")) != NULL) {
^ ~~~~~~~~~~~~~~~~~~~~~~~
kernel_dump.c:898:6: warning: incompatible integer to pointer conversion assigning to 'FILE *' (aka 'struct __sFILE *') from 'int'
[-Wint-conversion]
fo = fopen64(fname, "wb");
^ ~~~~~~~~~~~~~~~~~~~~
kernel_dump.c:899:9: warning: incompatible integer to pointer conversion assigning to 'FILE *' (aka 'struct __sFILE *') from 'int'
[-Wint-conversion]
fooff = fopen64(fnameoff, "wb");
^ ~~~~~~~~~~~~~~~~~~~~~~~
kernel_dump.c:938:5: warning: incompatible integer to pointer conversion assigning to 'FILE *' (aka 'struct __sFILE *') from 'int'
[-Wint-conversion]
fo = fopen64(fname, "wb");
^ ~~~~~~~~~~~~~~~~~~~~
kernel_dump.c:1032:5: warning: incompatible integer to pointer conversion assigning to 'FILE *' (aka 'struct __sFILE *') from 'int'
[-Wint-conversion]
fi = fopen64(fld, "rb");
^ ~~~~~~~~~~~~~~~~~~
kernel_dump.c:1121:7: warning: implicit declaration of function 'gunziper' is invalid in C99 [-Wimplicit-function-declaration]
if (gunziper(argv[2], fld))
^
kernel_dump.c:1124:5: warning: incompatible integer to pointer conversion assigning to 'FILE *' (aka 'struct __sFILE *') from 'int'
[-Wint-conversion]
a = fopen64(fld, "rb");
^ ~~~~~~~~~~~~~~~~~~
kernel_dump.c:1128:4: warning: implicit declaration of function 'untar' is invalid in C99 [-Wimplicit-function-declaration]
untar(a, argv[2], argv[1]);
^
19 warnings generated.
"/home/Desktop/osxtoolchain/osxcross/target/bin/i386-apple-darwin11-ld" -demangle -dynamic -arch i386 -macosx_version_min 10.5.0 -syslibroot /home/Desktop/osxtoolchain/osxcross/target/bin/../SDK/MacOSX10.7.sdk -o kernel_dump.i386-apple-darwin11 -lcrt1.10.5.o /tmp/lz4-16d666.o /tmp/unpackbootimg-3a4efe.o /tmp/kernel_dump-383f4f.o -lSystem -lgcc_s.10.5
Undefined symbols for architecture i386:
"_fopen64", referenced from:
_file_size in kernel_dump-383f4f.o
_convert_sin_to_elf in kernel_dump-383f4f.o
_copyf in kernel_dump-383f4f.o
_extract_elf in kernel_dump-383f4f.o
_kernel_dump_main in kernel_dump-383f4f.o
"_fseeko64", referenced from:
_file_size in kernel_dump-383f4f.o
_convert_sin_to_elf in kernel_dump-383f4f.o
_extract_elf in kernel_dump-383f4f.o
_kernel_dump_main in kernel_dump-383f4f.o
"_ftello64", referenced from:
_file_size in kernel_dump-383f4f.o
_convert_sin_to_elf in kernel_dump-383f4f.o
"_gunziper", referenced from:
_kernel_dump_main in kernel_dump-383f4f.o
"_main", referenced from:
start in crt1.10.5.o
(maybe you meant: _kernel_dump_main)
"_untar", referenced from:
_kernel_dump_main in kernel_dump-383f4f.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Seems LFS is not supported?
Last edited: