building gcj on OS X (also AWT)

Andrew Pinski pinskia@physics.uc.edu
Fri May 21 07:07:00 GMT 2004


On May 20, 2004, at 22:30, John Gabriele wrote:
>> You're welcome.
>> It took about 4 hours for me to "make bootstrap", but here I am
> with a nice fresh gcj binary. :) Right off the bat though, what
> puzzles me is, when I run gcj it presumably uses other tools in
> /usr/local/gcj/bin and /usr/local/gcj/libexec to do its job (g++,
> gcc, the preprocessor, etc.). Since I installed everything in
> /usr/local/gcj, and since that directory is *not* in my path,
> when I run
>> /usr/local/gcj/bin/gcj -c Foo.java
> /usr/local/gcj/bin/gcj --main=Foo -o myProgram Foo.o
>> how does gcj find the tools it needs in /usr/local/gcj if
> that directory isn't in my $PATH? Why doesn't it get the wrong
> tools instead (the ones in /usr/local/bin) and barf?

Because this is the way GCC was always worked, GCC the driver
tries to finds its compilers via a couple of different directories
and the first one is always PREFIX/libexec/gcc/TARGET/VERSION/ and
if it does not match in there or the executable is really in a
different place, it looks for them via a relative path from the driver.
> Same goes for libraries. I'm not sure how OS X does things,
> but I know that:
>> A. I've got two libstdc++'s (one in /usr/local/gcj/lib and the
> other in /usr/lib).

Two reasons:
	1. because GCC when invoked does a -LPATH_TO_LIBRARIES_FOR_THIS_GCC
	2. Because on Mac OS X the library installed path gets built into
the executable so it finds the right one.
> B. I haven't edited any /etc/ld.so.conf and haven't run any
> ldconfig (which, I notice don't even exist on OS X)

Explained about in 2.
>> So, when I run my little myProgram (which works fine), how does
> it find the right libstdc++? (or any other lib that it needs from
> /usr/local/gcj/lib for that matter). (Hmm... no ldd here either...)

Explained in 2. Also read dyld's man page for more information.
Thanks,
Andrew Pinski


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /