On 11/10/2011 01:49 PM, Robert Ottenhag wrote:
On 11/10/2011 06:24 AM, mark.reinh...@oracle.com wrote:
Some Linux distros have started to adopt a "multiarch" filesystem
layout for
shared libraries in order to support the installation of packages for
multiple
hardware architectures on a single system. For more information see,
e.g.,
http://wiki.debian.org/Multiarch.
In Ubuntu 11.10 the ALSA shared library, libasound2, was converted to
the
multiarch format and so its files moved from their old location,
/usr/lib,
to /usr/lib/${ARCH_TRIPLET}. This caused the JDK build to fail when
linking
the Java sound library. The root cause appears to be that gcc only
tries to
resolve undefined symbols against a multiarch library if the library
is named
on the command line after the object files containing those symbols.
The fix is simply to move -lasound to the end of the gcc invocation.
I'll push this into JDK 8. It would trivially backport to 7.
Patch:
--- a/make/javax/sound/jsoundalsa/Makefile
+++ b/make/javax/sound/jsoundalsa/Makefile
@@ -65,7 +65,7 @@
$(MIDIFILES_export) \
$(PORTFILES_export)
-LDFLAGS += -lasound
+EXTRA_LIBS += -lasound
CPPFLAGS += \
-DUSE_DAUDIO=TRUE \
Thanks,
- Mark
Mark,
The patch is correct, but in order to follow the convention in most
other makefiles, I advice to use OTHER_LDLIBS instead of EXTRA_LIBS. I
have tested this patch locally on Ubuntu 11.10-x64 for most branches
for OpenJDK 6, 7 and 8 and meant to commit it earlier but... please go
ahead.
Thank
/Robert
I am also not entirely convinced that the new multiarch support is the
reason for these failures, although it may trigger it. The specification
for GNU ld is that dependencies on the link line should always be
written left to right, i.e. object files before library files. See also
http://stackoverflow.com/questions/45135/linker-order-gcc/409402#409402.
With that it mind, I would not be surprised if we get similar failures
in the future and that is why I suggest that every linker line without
circular dependencies should be ordered left to right. However, this
will probably be satisfied in the near future as part of the new
build-infra project that is converting each and every native library
Makefile.
/Robert
--
Oracle
Robert Ottenhag | Senior Member of Technical Staff
Phone: +46850630961 | Fax: +46850630911 | Mobile: +46707106161
Oracle Java HotSpot Virtual Machine
ORACLE Sweden | Folkungagatan 122 | SE-116 30 Stockholm
Oracle Svenska AB, KronborgsgrÀnd 17, S-164 28 KISTA, reg.no. 556254-6746
Green Oracle
Oracle is committed to developing practices and products that help protect the
environment
--