On Tue, Jan 17, 2012 at 1:21 AM, Alexander Sack asac@linaro.org wrote:
On Mon, Jan 16, 2012 at 3:32 AM, Michael Hope michael.hope@linaro.org wrote:
Hi there. I have a style question. For the pre-built versions of gcc-linaro, should we release a i686 version that also runs on x86_64, or do separate i686 and x86_64 builds?
If we do just an i686 version then: * There's less to test * There's one 'linux' binary so less confusion on what to download and a simpler download page * Most end users will already have the 32 bit libraries due to Skype or Flash
but it has some downsides: * May not work 'out of the box' * Cryptic failures if you don't have the 32 bit libraries installed
Can we improve error reporting for those? Or maybe shipping a check-install script that probes for proper 32-bit libs?
On a 64 bit system with no 32 bit libraries at all then you see the scary and misleading '-bash: arm-linux-gnueabi-gcc: No such file or directory'. Bash tried to run the program, couldn't find the lib/ld-linux.so.2 loader, and fails.
I wonder if there's a fat binary style wrapper that can give you a more informative message. Say some 64 bit code that runs if you're on a 64 bit host that prints 'This is a 32 bit program. Please see README.txt for instructions on how to install the required 32 bit libraries.'
I like the 'hey, if something's wrong run check-install.sh' idea.
* Some users can't install extra packages and may not be allowed the 32 bit libraries
What libs are potentially missing? How many of those could get linked in statically?
Fairly minimal - just those provided by the LSB such as zlib, ncurses, libm, and libc. More esoteric libraries such as expat are already statically linked.
Unfortunately a clean 64 bit install doesn't even include a 32 bit libc. It feels wrong to statically link it.
Note that CodeSourcery's compiler is 32 bit only and dynamically links against libc.
-- Michael