Skip to content

[GR-39191] error linking the native image - multiple definition of `jvm' #4594

@Holger2019

Description

@Holger2019

Hello,

unfortunately I have a problem and have unfortunately found nothing that helps me.

Describe the issue
I am trying to convert a JAR file that uses swing / awt components into a native image. Since this does not work on Windows, I set up a ubuntu subsystem. This worked fine so far. However, I get a "linking" error during the "Creating image" step. According to my understanding this error is caused by multiple definitions of jvm ( /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libawt.a(awt_LoadLibrary.o):(.bss.jvm+0x0): multiple definition of `jvm'; /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libawt_xawt.a(XlibWrapper.o):(.bss.jvm+0x0): first defined here)
--> does anyone know how to solve this problem? If yes, many thanks in advance.

Steps to reproduce the issue

  1. Jar-file (via eclipse):

import javax.swing.JFrame;
public class Testgraal {
public static void main(String[] args) {
JFrame meinFrame = new JFrame("TEST JFrame");
meinFrame.setSize(200,200);
meinFrame.setVisible(true);
}
}

  1. use Traceagent:
    java -agentlib:native-image-agent=config-merge-dir=config/META-INF/native-image -jar /home/info/JAR-TEST/TEST.jar

  2. build native-image:
    native-image -cp config:. -Djava.awt.headless=false -jar /home/info/JAR-TEST/TEST.jar
    I have tried many flags. But they didn't worked.

Describe GraalVM and your environment:

  • java version "17.0.3" 2022-04-19 LTS
  • Java(TM) SE Runtime Environment GraalVM EE 22.1.0 (build 17.0.3+8-LTS-jvmci-22.1-b05)
  • Java HotSpot(TM) 64-Bit Server VM GraalVM EE 22.1.0 (build 17.0.3+8-LTS-jvmci-22.1-b05, mixed mode, sharing)
  • JDK major version: 17
  • OS: Ubuntu 9.4.0-1ubuntu1~20.04.1 (Windows-Subsystem for Linux (Windows 11))
  • Architecture: x86_64 AMD64

More details
output:

> > GraalVM Native Image: Generating 'TEST' (executable)...
> > ========================================================================================================================
> > [1/7] Initializing...                                                                                    (2.7s @ 0.12GB)
> >  Version info: 'GraalVM 22.1.0 Java 17 EE'
> >  C compiler: gcc (linux, x86_64, 9.4.0)
> >  Garbage collector: Serial GC
> > [2/7] Performing analysis...  [*********]                                                               (14.0s @ 1.18GB)
> >    7,450 (85.07%) of  8,758 classes reachable
> >   14,482 (62.95%) of 23,004 fields reachable
> >   43,688 (60.93%) of 71,706 methods reachable
> >      177 classes,    95 fields, and   866 methods registered for reflection
> >      120 classes,   178 fields, and    93 methods registered for JNI access
> > [3/7] Building universe...                                                                               (1.4s @ 1.78GB)
> > [4/7] Parsing methods...      [*]                                                                        (1.0s @ 1.80GB)
> > [5/7] Inlining methods...     [****]                                                                     (1.1s @ 2.30GB)
> > [6/7] Compiling methods...    [*****]                                                                   (25.1s @ 1.33GB)
> > [7/7] Creating image...
> >                                                                                   (0.0s @ 2.53GB)
> > Fatal error: java.lang.RuntimeException: There was an error linking the native image: Linker command exited with 1
> > 
> > Linker command executed:
> > /usr/bin/gcc -z noexecstack -Wl,--gc-sections -Wl,--dynamic-list -Wl,/tmp/SVM-10078692684294649371/exported_symbols.list 
> 
> > -Wl,--exclude-libs,ALL -Wl,-x -o /home/info/TEST TEST.o /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libnet.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libjavajpeg.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libnio.a /home/info/graalvm-ee-java17-22.1.0/lib/svm/clibraries/linux-amd64/liblibchelper.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libjava.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/liblcms.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libprefs.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libfontmanager.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libawt_xawt.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libawt.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libfdlibm.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libzip.a /home/info/graalvm-ee-java17-22.1.0/lib/svm/clibraries/linux-amd64/libjvm.a -v -L/tmp/SVM-10078692684294649371 -L/home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc -L/home/info/graalvm-ee-java17-22.1.0/lib/svm/clibraries/linux-amd64 -lX11 -lXrender -lXext -lXi -lstdc++ -lm -lfreetype -lpthread -ldl -lz -lrt
> 
> > 
> > Linker command output:
> > Using built-in specs.
> > COLLECT_GCC=/usr/bin/gcc
> > COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper
> > OFFLOAD_TARGET_NAMES=nvptx-none:hsa
> > OFFLOAD_TARGET_DEFAULT=1
> > Target: x86_64-linux-gnu
> > Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
> > Thread model: posix
> > gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
> > COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/
> > LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/
> > COLLECT_GCC_OPTIONS='-z' 'noexecstack' '-o' '/home/info/TEST' '-v' '-L/tmp/SVM-10078692684294649371' '-L/home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc' '-L/home/info/graalvm-ee-java17-22.1.0/lib/svm/clibraries/linux-amd64' '-mtune=generic' '-march=x86-64'
> >  /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccvO0fNh.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o /home/info/TEST -z noexecstack /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/tmp/SVM-10078692684294649371 -L/home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc -L/home/info/graalvm-ee-java17-22.1.0/lib/svm/clibraries/linux-amd64 -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. --gc-sections --dynamic-list /tmp/SVM-10078692684294649371/exported_symbols.list --exclude-libs ALL -x TEST.o /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libnet.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libjavajpeg.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libnio.a /home/info/graalvm-ee-java17-22.1.0/lib/svm/clibraries/linux-amd64/liblibchelper.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libjava.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/liblcms.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libprefs.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libfontmanager.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libawt_xawt.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libawt.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libfdlibm.a /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libzip.a /home/info/graalvm-ee-java17-22.1.0/lib/svm/clibraries/linux-amd64/libjvm.a -lX11 -lXrender -lXext -lXi -lstdc++ -lm -lfreetype -lpthread -ldl -lz -lrt -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o
> > /usr/bin/ld: /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libawt.a(awt_LoadLibrary.o):(.bss.jvm+0x0): multiple definition of `jvm'; /home/info/graalvm-ee-java17-22.1.0/lib/static/linux-amd64/glibc/libawt_xawt.a(XlibWrapper.o):(.bss.jvm+0x0): first defined here
> > collect2: error: ld returned 1 exit status
> >         at com.oracle.svm.hosted.image.NativeImageViaCC.handleLinkerFailure(NativeImageViaCC.java:505)
> >         at com.oracle.svm.hosted.image.NativeImageViaCC.write(NativeImageViaCC.java:452)
> >         at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:695)
> >         at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:515)
> >         at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:407)
> >         at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:585)
> >         at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:128)
> >         at com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus.main(NativeImageGeneratorRunner.java:615)
> > ------------------------------------------------------------------------------------------------------------------------
> >                         4.7s (9.2% of total time) in 71 GCs | Peak RSS: 5.91GB | CPU load: 12.08
> > ========================================================================================================================
> > Failed generating 'TEST' after 50.2s.
> > Error: Image build request failed with exit status 1

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions