OK Anthony, I'll give it a try and let you know Spyros "Foucault" Stathopoulos On 11/20/05, Anthony Green <green@xxxxxxxxxx> wrote: > 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 > > >