Following the instructions here, I am trying to build Fiwix with the newest gcc cross-compiler but it fails with many errors like this:
ld: kernel/init.o:(.bss+0x0): multiple definition of `vcbuf'; kernel/gdt.o:(.bss+0x30): first defined here
Starting in version 10, gcc has adopted -fno-common as a default option. See here for details.
There is quite a bit of discussion on whether common variables are allowed by "the standards" and it appears to me that supporting them is "optional" for a C compiler. I have my own opinion on the use of common variables which I'll share if asked but I'll defer to your judgment on how to resolve this.
If you think gcc is being too strict, the "-fcommon" option can be added to the CFLAGS and the problem is resolved.
Alternatively, the variables can be declared once in .c files and declared extern in headers. Also, the "-fno-common" flag could be added to CFLAGS to ensure the problem is flagged in the future for older versions of gcc. This is substantially more work as there are over a dozen variables to address.
I'm happy to submit submit a PR for either option.
Following the instructions here, I am trying to build Fiwix with the newest gcc cross-compiler but it fails with many errors like this:
ld: kernel/init.o:(.bss+0x0): multiple definition of `vcbuf'; kernel/gdt.o:(.bss+0x30): first defined here
Starting in version 10, gcc has adopted -fno-common as a default option. See here for details.
There is quite a bit of discussion on whether common variables are allowed by "the standards" and it appears to me that supporting them is "optional" for a C compiler. I have my own opinion on the use of common variables which I'll share if asked but I'll defer to your judgment on how to resolve this.
If you think gcc is being too strict, the "-fcommon" option can be added to the CFLAGS and the problem is resolved.
Alternatively, the variables can be declared once in .c files and declared extern in headers. Also, the "-fno-common" flag could be added to CFLAGS to ensure the problem is flagged in the future for older versions of gcc. This is substantially more work as there are over a dozen variables to address.
I'm happy to submit submit a PR for either option.