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