diff --git a/Home.md b/Home.md index b0cf658..63c465d 100644 --- a/Home.md +++ b/Home.md @@ -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. ***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: - QEMU: open-source machine emulator