Update Home

texhno 2024-02-14 11:29:38 +00:00
parent 8d05b0313c
commit 9b08a323f7

@ -9,9 +9,12 @@ A great way to learn something new is to retrace the steps taken by someone who
To safeguard against dependency hell, all the essential software needed to develop and run our OS will be provided through a set of Docker images. For those unfamiliar with Docker, a command cheatsheet will be provided later on. To safeguard against dependency hell, all the essential software needed to develop and run our OS will be provided through a set of Docker images. For those unfamiliar with Docker, a command cheatsheet will be provided later on.
***Which compiler to use, gcc or clang?*** ***Which compiler to use, gcc or clang?***
... * Compilation times are comparable
* Clang reportedly has better error messages
* Clang/LLVM `lld` links on average twice as fast as GCC `ld` (Up to 10 times faster, reportedly)
* GCC - GPL, Clang - Apache licenses
** Decision**: ... Decision: They have many differences, above are the potentially most relevant. The GPL license seems preferable in this case, which is a point in favor of GCC. A major performance consideration comes when there are a lot of lib files as well as -debug. This difference will come down to the linker, and seeing as `lld` can be a drop-in replacement for `ld`, and added independent of Clang, it is not a major point in favor of Clang. We can simply install `lld` from the LLVM backend (Clang is just the frontend), and pass the `-fuse-ld=lld` flag to GCC to make it use `lld` instead of `ld`. For these reasons, I propose to start with GCC.
Preliminary list of essential software: Preliminary list of essential software:
- QEMU: open-source machine emulator - QEMU: open-source machine emulator