On Fri, 28 Apr 2023 23:25:17 GMT, Erik Joelsson <er...@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.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/13709#issuecomment-1528445381

Reply via email to