作者 | 时间 | 说明 |
---|---|---|
雨中星辰 | 2024-09-24 | |
概述
使用native-image -jar xx.jar
构建原生可执行文件时失败,检查错误当前当前目录下的错误日志svm_err_b_20240924T113653.693_pid27346.md
发现如下错误:
/usr/bin/ld: final link failed: 错误的值
collect2: error: ld returned 1 exit status
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.image.NativeImageViaCC.handleLinkerFailure(NativeImageViaCC.java:202)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.image.NativeImageViaCC.runLinkerCommand(NativeImageViaCC.java:152)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.image.NativeImageViaCC.write(NativeImageViaCC.java:118)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:741)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:550)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:539)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:721)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.start(NativeImageGeneratorRunner.java:143)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:98)
环境说明
操作系统:凝思6.0.80(debian 8)
GraalVM 版本: graalvm-jdk-21.0.4+8.1
系统架构:AMD64
gcc版本:4.9.2
ld版本:2.25
问题原因
2.25版本的binutil(ld)不兼容
处理办法
-
升级binutil为2.27+
- 使用源码安装
- 下载源码压缩包:
wget https://ftp.gnu.org/gnu/binutils/binutils-2.27.tar.gz
- 解压:
tar -zxvf binutils-2.27.tar.gz
- 进入目录:
cd binutils-2.27
- 配置:
./configure --prefix=/usr
- 编译:
make
- 安装:
make install
- 下载源码压缩包:
- 使用deb包安装(debian操作系统)
- 下载软件包(由于没有找到2.27的deb包,选择了最接近的
2.28
):https://archive.debian.org/debian/pool/main/b/binutils/binutils_2.28-5_amd64.deb
- 安装:
dpkg -i binutils_2.28-5_amd64.deb
- 下载软件包(由于没有找到2.27的deb包,选择了最接近的
- 使用源码安装
更换debian 9及以上的操作系统