I just found a bug in the install.sh script in the FreeBASIC-0.90.0-linux packages, that caused them to copy the lib/freebasic/ into /usr/local/lib/freebasic/freebasic instead of /usr/local/lib/freebasic. It should be
fixed now, I have reuploaded the two linux packages.
No idea how fbextra.x would end up at /usr/local/lib though either way, unless copied there manually by mistake. fbextra.x, fbrt0.o, libfb*.a should all be in /usr/local/lib/freebasic/ directory anyways.
--
As noted in the changelog.txt, fbc now uses a custom COFF/ELF32 reader instead of libbfd. It's much smaller (~16KB vs. ~500KB libbfd) because it only supports two formats, but that's all fbc currently needs. And this also got rid of all the libbfd ABI instability (every version is ABI incompatible to the last, every toolchain has a different one because they use different binutils versions) and licensing (GPL3, shouldn't be linked statically with GPL2+ fbc) issues. (this is an instance of bloat removal)
I have started comparing linker maps (fbc's -map option) for a simple hello world program compiled with FB-dos 0.90 and 0.24. So far I have made out one huge addition for 0.90 was the call to setlocale() that caused a pretty huge setlocal.o with 4.6KB of .text alone. But there must be more. It's possible that it's also related to the new gcc 4.8 DJGPP port which generates wasteful eh_frame sections now, although I didn't find those in final linked FB programs with objdump. I'll try to figure out more, but it's difficult...
The setlocale() call helped fix bugs on Linux and Win32, does it even make sense for DOS? I don't know.