Regarding your first question: yes, at least the HotSpot (i.e. libjvm.so) still statically links libstdc++.
You can verify this by looking at make/linux/makefiles/vm.make: ifeq ($(SHARK_BUILD), true) STATIC_CXX = false else ifeq ($(ZERO_LIBARCH), ppc64) STATIC_CXX = false else STATIC_CXX = true endif endif ... # JVM is statically linked with libgcc[_s] and libstdc++; this is needed to # get around library dependency and compatibility issues. Must use gcc not # g++ to link. ifeq ($(STATIC_CXX), true) LFLAGS_VM += $(STATIC_LIBGCC) LIBS_VM += $(STATIC_STDCXX) else LIBS_VM += -lstdc++ endif So for any build except SHARK build and ZERO builds on ppc64, libstdc++ is statically linked. STATIC_STDCXX is defined in make/linux/makefiles/gcc.make as: # statically link libstdc++.so, work with gcc but ignored by g++ STATIC_STDCXX = -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic Regards, Volker On Wed, Jan 4, 2012 at 7:16 AM, John Von Seggern <von...@gmail.com> wrote: > Way back in a bug report for Java 1.4, I found this note: > > "We statically link the C++ runtime in JDK and enabled linker script > to hide symbols from libstdc++ and other internal symbols." > --http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4694590 > > Does OpenJDK continue to take this approach? > > I'm asking because I would like to use the Java Native Interface to > call functions in a C++ library (that statically links the C++ > runtime). When I distribute my application, do I need to worry about > C++ ABI compatibility issues? > > In case it's useful to anyone, I also asked this question on StackOverflow: > http://stackoverflow.com/questions/8722320/is-the-java-native-interface-jni-affected-by-c-abi-compatibility-issues > > (I figured I'd also try asking here, too. I apologize if this is the > wrong place.) > > Thanks, > -John