Question: I am looking at uClinux system that builds the kernel with arm-linux-xxx, but builds the user apps with arm-elf-xxx.

If the apps are intended to run on linux, wouldn't it be better to build everything with arm-linux-xxx ?

Where does one set that option in the overall uClinux build config?

Answer: 
The names of the compilers don't necessarily mean anything. Depending on who built the compilers (and named them), you'll get differing results. Arguably, there is a correct name for a particular configuration, but some random compiled gcc may not be correct.

For the CodeSourcery compilers (likely the most correct names), see [their platforms page](http://www.codesourcery.com/sgpp/platforms.html) for what their naming means.
In our case we build linux using sparc-elf-gcc and we build busybox(appliation run on linux) using sparc-..-linux-gcc. and I think this is correct, not the other way around.