On Sat, 29 Apr 2023 01:44:07 GMT, Jiangli Zhou <jian...@openjdk.org> wrote:
> > > Erik, could you please share your > > > `support/native/java.base/java/BUILD_LAUNCHER_javastatic_static_link.cmdline`? > > > This generated .cmdline file contains the static linking command. Here > > > is the linking command from my build: > > > > > > I can't see any significant difference. I'm using a devkit created using > > the devkit makefiles. > > ``` > > .../devkit-linux_x64-gcc11.2.0-OL6.4+1.0.tar.gz/x86_64-linux-gnu-to-x86_64-linux-gnu/bin/gcc > > -Wl,-z,defs -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack > > -Wl,--hash-style=gnu -m64 -static-libstdc++ -static-libgcc > > -Wl,-rpath,$ORIGIN/. -Wl,--export-dynamic -o > > .../build/linux-x64/jdk/bin/javastatic > > /home/erik/git/jdk/build/linux-x64/support/native/java.base/java/main.o > > -Wl,--whole-archive .../build/linux-x64/images/static-libs/lib/libattach.a > > ... .../build/linux-x64/images/static-libs/lib/libjvm.a > > -Wl,--no-whole-archive -lpthread -ldl -lm -l:libstdc++.a > > ``` > > I did some search and found > https://stackoverflow.com/questions/2418157/c-error-undefined-reference-to-clock-gettime-and-clock-settime/32649327#32649327. > The clock_* functions moved from librt to libc (starting from glibc 2.17). > That finding led me to the following in libraries.m4: > > ``` > # librt for legacy clock_gettime > if test "x$OPENJDK_TARGET_OS" = xlinux; then > # Hotspot needs to link librt to get the clock_* functions. > # But once our supported minimum build and runtime platform > # has glibc 2.17, this can be removed as the functions are > # in libc. > BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lrt" > fi > ``` > > Since I use `ldd (Debian GLIBC 2.36-8+gl1) 2.36`, I didn't notice that until > now. Based on the above finding, I pushed a change to use $(JVM_LIBS) for the linking command. @erikj79 could you please see if that resolves the clock_* symbol issues in your environment? ------------- PR Comment: https://git.openjdk.org/jdk/pull/13709#issuecomment-1528637453