toolchain versions or good practices wrt toolchain versions?
Posted: Sat Feb 13, 2021 1:29 am
I'm pretty new to this topic so please forgive my basic questions and possible rantings.
Started to look at toolchain porting as the filesystem and related updates have been more stable now.
Longer term goal is to have the 'usual' tools like gcc gdb running and maybe even be able to build themselves. For now I'm trying to make my way through the wiki pages linked by https://wiki.osdev.org/Porting_GCC_to_your_OS
A big challenge I've noticed is the versioning of tools, esp. the minor dependencies like the auto* family, and the mismatched requirements.
For example, this page (https://wiki.osdev.org/Porting_Newlib) mentioned that newlib needs automake v1.11, and the version of newlib I got also needed autoconf 2.68 (and a certain version of m4).
But the binutils 2.36.1 I downloaded instead wants autoconf 2.69 (ld wants it), and also takes a dependency (unsure if it is from binutils or from autoconf 2.69) on automake 1.15+
From what I understand, binutils itself is just a "minor" dependency when compared with heavy weights like gdb and gcc. There're also articles encouraging a practice of "combined source tree" but it seems like asking for trouble if I simply throw together source trees that each depend on different versions of other tools?
My questions:
1. Is there a recommended set of stable (as in work with each other, not necessarily functionally) toolchain versions that are suitable for porting to a hobby OS? Obviously no need for any "latest and greatest" features, I'd be more than happy if it can build a helloworld
Understood that there could be bugs, that is fixed in current versions. But it's not like the current versions don't have any bugs that will be fixed tomorrow together with more dependencies/ tool version dependencies. It certainly doesn't seem worth the time to keep resolving the whole 'dependency graph' again and again.
I know that LFS publishes a "tested and working" set, but even LFS is quite up to date these days and their recommended version of binutils also needs autoconf 2.69. So not sure if suitable for our purposes.
2. Am I approaching this the wrong way by dreaming that that one set of dependencies/tool versions would work? Like, is it a prerequisite to install X different versions of auto* and other tools and artfaully manage the PATH (or spin up many different VMs)?
3. Could you share how are you managing this?
Started to look at toolchain porting as the filesystem and related updates have been more stable now.
Longer term goal is to have the 'usual' tools like gcc gdb running and maybe even be able to build themselves. For now I'm trying to make my way through the wiki pages linked by https://wiki.osdev.org/Porting_GCC_to_your_OS
A big challenge I've noticed is the versioning of tools, esp. the minor dependencies like the auto* family, and the mismatched requirements.
For example, this page (https://wiki.osdev.org/Porting_Newlib) mentioned that newlib needs automake v1.11, and the version of newlib I got also needed autoconf 2.68 (and a certain version of m4).
But the binutils 2.36.1 I downloaded instead wants autoconf 2.69 (ld wants it), and also takes a dependency (unsure if it is from binutils or from autoconf 2.69) on automake 1.15+
From what I understand, binutils itself is just a "minor" dependency when compared with heavy weights like gdb and gcc. There're also articles encouraging a practice of "combined source tree" but it seems like asking for trouble if I simply throw together source trees that each depend on different versions of other tools?
My questions:
1. Is there a recommended set of stable (as in work with each other, not necessarily functionally) toolchain versions that are suitable for porting to a hobby OS? Obviously no need for any "latest and greatest" features, I'd be more than happy if it can build a helloworld
Understood that there could be bugs, that is fixed in current versions. But it's not like the current versions don't have any bugs that will be fixed tomorrow together with more dependencies/ tool version dependencies. It certainly doesn't seem worth the time to keep resolving the whole 'dependency graph' again and again.
I know that LFS publishes a "tested and working" set, but even LFS is quite up to date these days and their recommended version of binutils also needs autoconf 2.69. So not sure if suitable for our purposes.
2. Am I approaching this the wrong way by dreaming that that one set of dependencies/tool versions would work? Like, is it a prerequisite to install X different versions of auto* and other tools and artfaully manage the PATH (or spin up many different VMs)?
3. Could you share how are you managing this?