i’m trying to compile a small Java app to native bytecode for a specific ARM-Linux board to see what the performance differences is (versus running through the Java SE interpreter). so far no love.
one experience with FOSS…
research this whole cross-compiling idea and Java compilers for a bit. decide to skip the latest release of GCC and go with a version that is known for sure to cross-compile for arm-elf.
download source. follow “known-to-work” steps. run configure. oops it doesn’t like something. research the error. oh great, several workarounds but you need to really understand each one in depth to choose.
screw it, just see if i can get it to work without a flag for now and come back later. run make all and wait. missing makeinfo, wtf? ok, i need to install the textinfo package on Ubuntu to get makeinfo.
make all again. same problem. research. something about cached settings, fine then, just delete it all and start from scratch. same error. look at the offending make file, hand edit it to not point incorrect path. run again. same problem different spot.
ah, i see that the root make file is telling several others this incorrect path, fix that. make all again and wait for a few minutes, lots of pretty text wooo! ah crap, new error and it’s now 3am. screw it then!!!
ok i’m going to just get the pre-compiled binaries for a way older version that has gcj included in it. get that, setup path, try arm-elf-gcj and get “no such file or directory exists”. try arm-elf-gcc, same error – all the executables give the same excellent error.
try setting PATH to include the lib and include folders, no luck. try passing the paths in with flags to gcc or gcj, same error still. research. oh how lucky for me, everyone else with this error actually got a file name and line number to help them, i’m just getting the error. seems like a dead end. ok, i give up! thankfully i don’t need this for real work!
so am i against open source? absolutely not. it can be great! like most things each experience varies. the more successful open source projects seem to have these common traits:
- a narrow focus of functionality
- strong obvious leadership (be that a single individual, a committed group of average joe’s, or one or more companies)
- few dependencies on other projects (helps from a licensing as well as actual implementation perspective)
though eminently useful and for the most part stable, GCC doesn’t really have the above traits. perhaps that’s why it’s easy to run up against some of its rough edges. also, i freely admit that i’m no C programmer and still nowhere near guru status in Linux either. however, i’m sure there are other people out there fitting the same description also just trying to get something accomplished.
sometimes the best tool for the job is a commercial closed-source product; other times it’s something completely within the realm of FOSS – more often it’s something in between. i’ll continue to recommend my clients explore all options and help them find the right tool for their particular situation.