Re: GCJ and MySQL Connector for Java

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 2005-11-20 at 20:49 +0200, Spyros Stathopoulos wrote:
> OK, I have something new, however I do not know if this is a "legal" way.

You're almost there.

> I've bundled all the source files for mysql connector found in the
> source rpm in a single jar file and compiled it into a shared library,
> which I've copied in /usr/lib.
> 
> gcj  -classpath /usr/share/java/log4j.jar -shared -o
> libmysql-connector-java-3.1.8.so mysql-connector-java-3.1.8.jar
> 
> After running ldconfig, I compile sucessfully my program with GCJ as following:
> 
> gcj  -O0 -g  "--classpath=/usr/share/java/mysql-connector-java.jar:./src/:"
>  -c src/org/testing/TestConnectMySQL.java -o
> src/org/testing/TestConnectMySQL.o
> 
> gcj  -O0 -g  --main=org.testing.TestConnectMySQL
> src/org/testing/Connect.o  -odebug/MySQL-Test -Ldebug
> -lmysql-connector-java-3.1.8

Your program has no symbolic reference to the mysql driver, it's just a
textual reference.  So linking the driver .so file to the executable
will have no effect.

When I said you need to force the library into you program, I meant by
creating mysql-connector-java-3.1.8.a file and the linking with
-Wl,--whole-archive,-lmysql-connector-java-3.1.8,--no-whole-archive.

Or you can rename the .so file to lib-com-mysql-jdbc.so, which is a
special name recognized by the gcj runtime (run your program with strace
to see how it tries to find libraries at runtime).

Or you can include a symbolic reference to a com.mysql.jdbc class to
force the .so to be loaded into your application.

You can also try running your program like so:
$ LD_PRELOAD=/usr/lib/libmysql-connector-java-3.1.8.so ./debug/MySQL-Test

Although I'm not certain if that last trick will work.

AG



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux