From: Mark Gray
My understanding of the restrictions that Linus put on Linux was that was that a program on one linux operating system had to be compatible with another operating system.
He has said nothing about application programs that I know of.
I have compiled a program with g++ compiler on suse linux and transferred the executable to a server running rad hat linux. If I compile this source code on the server it works but if I compile the same source code on desktop and ftp up executable it does not work. Both machines running 586. I looked at the server executbale and it was 20k in size. The executable on my system was about 30k using the same source code. Is this incompatability my fault?
Redhat-7.0 uses a beta version of gcc/g++ which uses a new and incompatible name mangling convention so you cannot run c++ programs compiled with earlier versions of g++ on redhat-7.0 and vice versa (unless you statically link them, but c++ statically linked programs are absolutely huge.) The egcs people seem to suggest that they will be returning to the old name mangling convention before releasing the next version (as I read it) and were a bit upset that redhat included the beta g++ (but it is a more advanced/standards compliant version.)
Could this be because I have my hard drive in 32 bit mode and maybe server in 16 bit mode?
No such thing in Linux -- see above.
Does anyone have any ideas how I can fix this? I find this confusing because I downloaded from another companies site once and it worked on my suse.
You probably should take a look at www.dejanews.com, www.google.com, the archive of the egcs lists at www.cygnus.com, or the archives of the redhat lists (if you can find them) for an answer -- there was quite a bit of anger when people first found out about the problem, so there is probably an answer in there somewhere (I gave redhat-7.0 a miss myself.)