Compilieren unter Mac OS X Snow Leopard
-
Oh.. was machen wir denn da?
-
Cuervo schrieb:
Oh.. was machen wir denn da?
Man könnte beim gcc noch den Parameter --verbose (glaube ich) angeben, vielleicht sieht man da mehr...
-
*ähm.. naja..
`gcc *.o --script=kernel/kernel.ld -nostdinc -o kernel/KERNEL.BIN -arch i386 -m32 --verbose
Using built-in specs.
Target: i686-apple-darwin10
Configured with: /var/tmp/gcc/gcc-5646.1~2/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/[cg][.-]*/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10
Thread model: posix
gcc version 4.2.1 (Apple Inc. build 5646) (dot 1)
/usr/libexec/gcc/i686-apple-darwin10/4.2.1/collect2 -dynamic -arch i386 -macosx_version_min 10.6.2 -weak_reference_mismatches non-weak -o kernel/KERNEL.BIN -lcrt1.10.6.o -L/usr/lib/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../../i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../.. ckernel.o cmos.o data.o descriptor_tables.o elf.o flpydsk.o flush.o fs.o gdt.o initrd.o interrupts.o irq.o kernel.o keyboard.o kheap.o list.o math.o paging.o pci.o process.o shared_pages.o syscall.o task.o time.o timer.o util.o video.o -lSystem -lgcc -lSystem
Undefined symbols:
"__kernel_beg", referenced from:
__kernel_beg$non_lazy_ptr in paging.o
"__kernel_end", referenced from:
__kernel_end$non_lazy_ptr in paging.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [ckernel] Error 1`
-
Soweit ich gelesen habe bringt Mac OS kein binutils mit. Das ld ist daher nicht das GNU ld, sondern eine Eigenkreation von Apple. Diese unterstützt zum einen nur das macho Format und hat keine Unterstützung für Linkerscripte. Der mitgelieferte gcc ist natürlich auch darauf getrimmt diesen Linker zu nutzen.
Die beste Lösung wäre sich ein (ordentliches) gcc und ld zu besorgen/bauen und diese dann einsetzen. Stichwort cross-compiler.
-
Ok, ich hab mal alle ports gesucht, welchen soll ich nehmen?
apple-gcc33 @1823 (lang)
Apple's version of gcc 3.3apple-gcc40 @5465 (lang)
Apple's version of gcc 4.0apple-gcc42 @5531 (lang)
Apple's version of gcc 4.2apple-gcc42-devel @5564 (lang)
Updated version of Apple's version of gcc 4.2arm-aout-gcc @3.3.6 (cross, devel)
gcc cross-compilers for arm-aout, with newlib runtime library.arm-elf-gcc @4.3.2 (cross, devel)
gcc cross-compilers for arm-elf, with newlib runtime library.arm-elf-gcc3 @3.4.6 (cross, devel)
gcc 3.x cross-compilers for arm-elf, with newlib runtime library.arm-none-linux-gnueabi-gcc @2005q3-2 (cross, devel)
gcc 3.x cross-compilers for arm-none-linux-gnueabi.arm-rtems-gcc @4.2.3 (cross, devel)
gcc cross-compilers for arm-rtems, with newlib runtime library.avr-gcc @4.0.2 (cross, devel)
gcc cross-compilers for avrgcc33 @3.3.6 (lang)
The GNU compiler collectiongcc34 @3.4.6 (lang)
The GNU compiler collectiongcc40 @4.0.4 (lang)
The GNU compiler collectiongcc41 @4.1.2 (lang)
The GNU compiler collectiongcc42 @4.2.4 (lang)
The GNU compiler collectiongcc43 @4.3.4 (lang)
The GNU compiler collectiongcc44 @4.4.2 (lang)
The GNU compiler collectiongcc45 @4.5-20091217 (lang)
The GNU compiler collection, prerelease BETAgcc_select @0.1 (sysutils)
Switch the default compilergccmakedep @1.0.2 (x11, devel)
Create dependencies in makefiles using 'gcc -M'gccxml @0.6.0 (lang)
generates XML description of C++ codegccxml-devel @20090713 (lang)
generates XML description of C++ codegnat-gcc @4.4.2 (lang)
The GNU compiler collection with GNATi386-elf-gcc @4.3.2 (cross, devel)
gcc cross-compilers for i386-elf, with newlib runtime library.i386-mingw32-gcc @3.4.5-20060117-2 (cross, devel)
Mingw32 cross-compiler for i386-Win32i386-rtems-gcc @4.2.3 (cross, devel)
gcc cross-compilers for i386-rtems, with newlib runtime library.i960-rtems-gcc @3.2.3 (cross, devel)
gcc cross-compilers for i960-rtems, with newlib runtime library.lcov @1.7 (devel)
LCOV is a graphical front-end for GCC's coverage testing tool gcov.llvm-gcc42 @2.6 (lang)
llvm is a next generation compiler infrastructurem68k-elf-gcc @3.4.6 (cross, devel)
gcc cross-compilers for m68k-elf, with newlib runtime library.m68k-rtems-gcc @4.2.3 (cross, devel)
gcc cross-compilers for m68k-rtems, with newlib runtime library.mips-elf-gcc @3.4.6 (cross, devel)
gcc cross-compilers for mips-elf, with newlib runtime library.mips-rtems-gcc @4.2.3 (cross, devel)
gcc cross-compilers for mips-rtems, with newlib runtime library.mipsel-linux-gcc34 @3.4.6 (cross)
gcc cross compiler for mips-linux with uClibpowerpc-rtems-gcc @4.2.3 (cross, devel)
gcc cross-compilers for powerpc-rtems, with newlib runtime library.py26-pygccxml @1.0.0 (python, devel)
pygccxml is a python interface to gcc-xmlsh-rtems-gcc @4.2.3 (cross, devel)
gcc cross-compilers for sh-rtems, with newlib runtime library.sparc-rtems-gcc @4.2.3 (cross, devel)
gcc cross-compilers for sparc-rtems, with newlib runtime library.
-
Entweder gcc44 oder i386-elf-gcc – allerdings fehlen dann noch die binutils, also ld.
-
XanClic schrieb:
Entweder gcc44 oder i386-elf-gcc – allerdings fehlen dann noch die binutils, also ld.
Unter Windows verwende ich (logischerweise) auch einen Crosscompiler, der afair auch "i386-elf-gcc" heißt. Da ist ld aber mit dabei, vielleicht hier ja auch?
-
Ausschließen will ich es nicht, aber dann hätte das Paket einen irreführenden Namen – weil ld nunmal zu den binutils und nicht zu gcc gehört.
-
gcc ohne ld macht doch keinen Sinn?
-
ld gehört aber nicht zur GCC (also zur GNU Compiler Collection), sondern zu besagten GNU binutils. Es ist halt einfach so.
(Wenn man also die Quellcodepakete einzeln runterlädt und kompiliert, hat man nach Kompilieren von GCC halt nur den Compiler und muss dann noch die binutils kompilieren, um den etwas sinnvolles tun zu lassen)
-
ENDLICH! ICH HABE ES GESCHAFFT!
Ich kann jetzt mit meinem Mac PrettyOS compilieren! Vielen Dank an alle, die mir geholfen haben.
(Sollte jemand eine Anleitung benötigen, so ist dies bitte hier zu melden!)
-
Sehr gut! Wir wollen niemanden verlieren.
-
Cuervo schrieb:
(Sollte jemand eine Anleitung benötigen, so ist dies bitte hier zu melden!)
Es wäre allgemein nicht schlecht wenn du zumindest grob beschreiben würdest was du gemacht hast. Dann hätte man etwas was man Mac Usern sagen kann, oder man könnte einen Hinweis ins Tutorial für die ersten Schritte unter Mac OS einbauen.
-
Super, dann hab ich hier was vorbereitet:
-
Danke für den Beitrag!