Hi Dave,

AFAIK, the linker itself (let's call it "ld") is too simplistic to
handle more complex scenarios, e.g. the presence of both (and
incompatible ...) 32bit and 64bit shared libraries of one and the same
"functionality" in the system.

OTOH, the "gcc" script (resp. the "g++" script) "knows" these issues.
And, silently in the background, includes (or not) the correct
compiler specific libraries, links to the correct C Runtimes, and so
on. That has nothing to do with the job of ld, but with setting up the
necessary prerequisites ("rpath" path inclusion of "/usr/lib/..."
versus "/usr/lib64/..." and such things)

This is comparable to the GCC (GNU Compiler Collection) compile
process, the actual compiling is done by some "cc1" --- and "gcc"
resp. "g++" is a wrapper, that cares for some administrative
bookkeeping. Or dirty hacks and crappy workarounds, if you wish ...

Put the other way around:
Either you run for linking "gcc -m64 ...", and then quite some magic
happens behind the scenes --- the ld ultimately called will never see
the "-m64" option explicitly, but implicitly care has been taken for
the "right" things to happen.
Or you run for linking "ld ...", but then you'll have to add manually
a lot of stuff like specific paths to precisely the correct compiler
specific "internal" libraries, like libstdc++ and so on. On Mac OS X,
a nightmare ...


Cheers,
Georg
-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to