Re: [GCC 4.4.0 / 4.4.1] GCJ - ecj1: undefined symbol: JvRunMainName, In function `_Jv_platform_nanotime()': undefined reference to "clock_gettime"

Andrew Haley <[email protected]>
Newsgroups gmane.comp.gcc.java.devel
Message-ID <[email protected]>
On 07/23/2009 11:38 PM, Piotr D. Kaczorowski wrote:
> 
> Hello there!
> 
> I'd like to build GCC 4.4.1 with GCJ on Centos 5.3 and have some
> problems with that.
> 
> 
> Description:
> 
> I'm using vanilla gcc source with gmp-4.2.4 and mpfr-2.3.2.
> 
> This is my configuration line:
> ./configure --program-suffix=44 --enable-languages=c,c++,java
> --with-ecj-jar=/usr/src/ecj/ecj.jar
> 
> ecj.jar is from FC11. GCC 4.4 with GCJ works on that system.

Hmm.  The usual ecj.jar is the one in:

 $ cksum /usr/share/java/ecj.jar
3248650573 1442090 /usr/share/java/ecj.jar

It's worth checking that.

> Problems:
> 
> 1) undefined symbol: JvRunMainName
> 
> [piotr@localhost gcj-3]$ gcj44 Foo.java
> /usr/local/libexec/gcc/i686-pc-linux-gnu/4.4.1/ecj1: symbol lookup
> error: /usr/local/libexec/gcc/i686-pc-linux-gnu/4.4.1/ecj1: undefined
> symbol: JvRunMainName

Hard to say.  Maybe a LD_LIBRARY_PATH issue?  Have you moved ecj
or its libraries from where it was installed?  Try

ldd /usr/local/libexec/gcc/i686-pc-linux-gnu/4.4.1/ecj1

> 2) static linking (http://gcc.gnu.org/wiki/Statically_linking_libgcj)
> 
> Small program:
> public class Foo
> {
>   public static void main(String args[])
>   {
>       System.out.println("Hello.");
>   }
> }
> 
> [piotr@localhost gcj-3]$ gcj -c Foo.java
> [piotr@localhost gcj-3]$ gcj --main=Foo -save-temps Foo.java
> [piotr@localhost gcj-3]$ gcc -o Foo Foo.o Foomain.i -shared-libgcc
> -Wl,-non_shared -lgcj -Wl,-call_shared -lsupc++ -Wl,--as-needed -lz
> -lgcc_s -lpthread -lc -lm -ldl -Wl,--no-as-needed
> /usr/local/lib/libgcj.a(posix.o): In function `_Jv_platform_nanotime()':
> posix.cc:(.text+0xa0): undefined reference to `clock_gettime'
> collect2: ld returned 1 exit status

I don't really know.  Maybe you just need to refer to libc before libgcj.

Statically linking libgcj is *not* something you can just do from a recipe.
You have to understand how linking works, and when finding problems like
this you have to be prepared to investigate yourself.

Andrew.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.