Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Jan 2004 14:06:02 -0800
From:      "Renaud Waldura" <renaud+freebsd-java@waldura.com>
To:        <freebsd-java@freebsd.org>
Subject:   Re: Problems linking against pthreads
Message-ID:  <001f01c3e38f$6d6b8fa0$011211ac@biohz.net>
References:  <001101c3e384$ae908180$011211ac@biohz.net>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.

------=_NextPart_000_001C_01C3E34C.5DADD980
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

I got it. I needed to link the glue library against libc_r.
I attach a patch with my changes, maybe it will help somebody one day...



----- Original Message -----
From: "Renaud Waldura" <renaud+freebsd-java@waldura.com>
To: <freebsd-java@freebsd.org>
Sent: Sunday, January 25, 2004 12:49 PM
Subject: Problems linking against pthreads


> I'm attempting to write an Icecast stream source in Java. I've got Icecast
> 2.0 all built up and working, with all its libraries libshout, libvorbis
> etc.
>
> I have found this package:
> http://benow.ca/index?page=project&project=libshout-java
> that allows me to make calls to libshout from a Java program, but I'm
having
> a hard time getting the library links resolved correctly.
>
> When running a Java program that uses the libshout-java glue, I get:
>
> java.lang.UnsatisfiedLinkError:
> /home/renaud/src/libshout-java-0.1-freebsd/native/libshoutjava.so.1.0:
> /usr/local/lib/libshout.so.3: Undefined symbol "pthread_cond_signal"
>
> OK, so it looks like libshout needs pthreads. Another program that uses
> libshout is linked against both libc and libc_r, thus including pthreads.
>
> work/ices-2.0-Beta2/src/ices:
>         libshout.so.3 => /usr/local/lib/libshout.so.3 (0x28158000)
>         libc_r.so.4 => /usr/lib/libc_r.so.4 (0x28343000)
>         libc.so.4 => /usr/lib/libc.so.4 (0x283fa000)
>
> Yet the Diablo VM I'm using is linked against libc only:
>
> java version "1.3.1"
> Java(TM) 2 Runtime Environment, Standard Edition (build diablo-1.3.1-0)
> Classic VM (build diablo-1.3.1-0, green threads, nojit)
>
> /usr/local/diablo-jdk1.3.1/jre/bin/i386/green_threads/java:
>         libhpi.so => not found (0x0)
>         libc.so.4 => /usr/lib/libc.so.4 (0x28067000)
>
> This is where I get stuck. How can I provide libc_r to my libshout when
the
> VM doesn't use it? Or is this the wrong approach?
>
> I'm running FreeBSD 4.2-RELEASE. Thanks for any clues!
>
> --Renaud
>

------=_NextPart_000_001C_01C3E34C.5DADD980
Content-Type: application/octet-stream;
	name="libshout-java-0.1-freebsd.patch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="libshout-java-0.1-freebsd.patch"

Only in libshout-java-0.1: build=0A=
diff -u -r libshout-java-0.1/build.xml =
libshout-java-0.1-freebsd/build.xml=0A=
--- libshout-java-0.1/build.xml	Sun Dec 14 18:26:00 2003=0A=
+++ libshout-java-0.1-freebsd/build.xml	Sun Jan 25 02:27:04 2004=0A=
@@ -58,7 +58,7 @@=0A=
 =0A=
   <target name=3D"native" depends=3D"compile"=0A=
    description=3D"Compile native code">=0A=
-	<exec dir=3D"native" executable=3D"make"/>=0A=
+	<exec dir=3D"native" executable=3D"gmake"/>=0A=
   </target>=0A=
 =0A=
   <target name=3D"jar" depends=3D"compile"=0A=
Only in libshout-java-0.1: dist=0A=
diff -u -r libshout-java-0.1/native/Makefile =
libshout-java-0.1-freebsd/native/Makefile=0A=
--- libshout-java-0.1/native/Makefile	Sun Dec 14 18:26:00 2003=0A=
+++ libshout-java-0.1-freebsd/native/Makefile	Sun Jan 25 13:43:53 2004=0A=
@@ -1,5 +1,5 @@=0A=
 # v-- Change these to match your install --v=0A=
-prefix=3D/opt/jdk=0A=
+prefix=3D/usr/local/diablo-jdk1.3.1=0A=
 #=0A=
 =0A=
 SHELL =3D /bin/sh=0A=
@@ -7,11 +7,11 @@=0A=
 JAVADIR=3D$(prefix)=0A=
 REL_JAVAEXTLIBPATH=3Djre/lib/i386=0A=
 JAVAEXTLIBPATH=3D$(JAVADIR)/$(REL_JAVAEXTLIBPATH)=0A=
-OSNAME=3Dlinux=0A=
+OSNAME=3Dfreebsd=0A=
 ARCHNAME=3Di386=0A=
 CC=3Dgcc=0A=
 DEFINES=3D-DUSE_LAME_API=0A=
-CPPFLAGS=3D-g -Wall -I$(JAVADIR)/include -I$(JAVADIR)/include/$(OSNAME) =
-fPIC -D_REENTRANT $(DEFINES)=0A=
+CPPFLAGS=3D-g -Wall -I/usr/local/include -I$(JAVADIR)/include =
-I$(JAVADIR)/include/$(OSNAME) -fPIC -D_THREAD_SAFE $(DEFINES)=0A=
 INSTALL =3D /bin/install -c=0A=
 INSTALL_PROGRAM =3D ${INSTALL}=0A=
 INSTALL_DATA =3D ${INSTALL} -m 644=0A=
@@ -30,7 +30,7 @@=0A=
 LIBDEST=3D$(LIBBASENAME).so.1.0=0A=
 LIBDEST_ABSOLUTE=3D$(ABS_PREFIX)/$(LIBDEST)=0A=
 =0A=
-LIBS=3D-lshout=0A=
+LIBS=3D-lc_r -L/usr/local/lib -lshout=0A=
 =0A=
 JAVAH =3D javah -force -classpath $(OBJDIR)=0A=
 =0A=
Binary files libshout-java-0.1/native/libshoutjava.so and =
libshout-java-0.1-freebsd/native/libshoutjava.so differ=0A=
Binary files libshout-java-0.1/native/libshoutjava.so.1 and =
libshout-java-0.1-freebsd/native/libshoutjava.so.1 differ=0A=
Binary files libshout-java-0.1/native/libshoutjava.so.1.0 and =
libshout-java-0.1-freebsd/native/libshoutjava.so.1.0 differ=0A=
diff -u -r libshout-java-0.1/native/org_xiph_libshout_Shout.c =
libshout-java-0.1-freebsd/native/org_xiph_libshout_Shout.c=0A=
--- libshout-java-0.1/native/org_xiph_libshout_Shout.c	Sun Dec 14 =
18:26:00 2003=0A=
+++ libshout-java-0.1-freebsd/native/org_xiph_libshout_Shout.c	Sun Jan =
25 10:45:33 2004=0A=
@@ -326,12 +326,13 @@=0A=
  */=0A=
 JNIEXPORT jint JNICALL Java_org_xiph_libshout_Shout_n_1write(JNIEnv =
*env, jobject obj, jcharArray chars, jint len) {=0A=
 	int i;=0A=
-	=0A=
+	jchar *elems;=0A=
+=0A=
 	// if the buffer is greater than our internal, return error (shouldn't =
happen)=0A=
 	if (len>8192) return SHOUTERR_MALLOC; =0A=
 	=0A=
 	// copy to const array=0A=
-	jchar *elems=3D(*env)->GetCharArrayElements(env, chars, 0);=0A=
+	elems=3D(*env)->GetCharArrayElements(env, chars, 0);=0A=
 	for (i=3D0;i<len;i++) buffer[i]=3Delems[i];=0A=
 	(*env)->ReleaseCharArrayElements(env, chars,elems,0);=0A=
 	=0A=

------=_NextPart_000_001C_01C3E34C.5DADD980--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?001f01c3e38f$6d6b8fa0$011211ac>