下载GraalVM ,github地址
https://github.com/graalvm/graalvm-ce-builds/releases/
CentOS系统得下载amd64 平台的,可别下载aarch64的(运行不了java命令)
废话不啰嗦了,直接开干!
cd /usr/local/
wget https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.1.0/graalvm-ce-java11-linux-amd64-22.1.0.tar.gzhttps://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.1.0/graalvm-ce-java11-linux-amd64-22.1.0.tar.gz
tar -zxvf graalvm-ce-java11-linux-amd64-22.1.0.tar.gz
# 配置环境变量
vi /etc/profile
添加以下配置:
export JAVA_HOME=/usr/local/graalvm-ce-java11-22.1.0
export GRAALVM_HOME=/usr/local/graalvm-ce-java11-22.1.0
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
然后wq 保存退出
让配置生效
source /etc/profile
测试配置结果
echo $JAVA_HOME
java -version
which java
安装 native-image
gu install native-image
是在线安装,可能安装失败,推荐去github上下载对应平台的版本。离线安装命令 gu install -L 文件下载的本地位置
国内网络下载比较慢建议进行离线安装
native-image 离线版下载地址:
https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.1.0/native-image-installable-svm-java11-linux-amd64-22.1.0.jar
安装native image 成功
编译 jar 包
native-image -jar [jar包全路径] [编译后的文件名称]
可以看到原 jar 包文件大小是 17MB,编译好的二进制文件是 3MB,编译时间为51s
运行编译好的文件
编译好的文件是二进制文件,Linux 环境下可以直接运行。
# 运行
chmod +x demo && ./demo
编译器错误gcc:错误:无法识别的命令行选项'-no pie'
这个可能跟系统的默认语言环境有关系,
查看命令:
echo $LANG
切换系统默认语言环境
CentOS 6 配置文件/etc/sysconfig/i18n
[root@node01 ~]# vi /etc/sysconfig/i18n
LANG="en_US.UTF-8" ###更改此处###
SYSFONT="latarcyrheb-sun16"
注意:“en_US.UTF-8” 表示英文语言环境,而"zh_CN.UTF-8"表示中文语言环境
source /etc/sysconfig/i18n
CentOS 7 配置文件/etc/locale.conf
[root@node01 ~]$ vi /etc/locale.conf
LANG="en_US.UTF-8"
source /etc/locale.conf
保存后source或者重启即可。
然后 echo $LANG 查看是否修改成
如有需要安装maven的,步骤如下
#修改配置文件 vim /etc/profile
export MAVEN_HOME=/usr/local/apache-maven-3.8.4
export PATH=$PATH:$MAVEN_HOME/bin
#重新加载配置 source /etc/profile
#查看maven版本信息 mvn -version
其他问题:
/usr/bin/ld: cannot find -lz
编译的时候出现"/usr/bin/ld: cannot find -lz"错误,需要安装zlib-dev这个包
# 先查看是否有这个包
rpm -qa | grep zlib
# 移除多余的或者重复的包
yum remove zlib-1.2.3-29.el6.x86_64
#安装相关依赖
yum install -y zlib zlib-devel
/usr/bin/ld: BFD version 2.20.51.0.2-5.46.el6 20100205 internal error, aborting at reloc.c line 443 in bfd_get_reloc_size
经过分析,centos 6.9的gcc版本低,而且由于centos6官方已经不支持了Centos 7,8 生命周期, 也没法通过yum升级gcc。
重新安装了基于centos7的系统,Mac下使用docker配置Centos7的go开发环境
再次配置好环境编译就没有问题了。
https://blog.51cto.com/u_15127700/4397593
参考文档: