编译
参考在线版,源码的doc/building.html
,Community builds using source code from OpenJDK project
OS:Deepin 20.1 Community (1030) 64 bit kernel 5.4.70-amd64-desktop
准备编译环境
sourcecode
1 |
|
dependencies
1 |
|
配置
1 |
|
bash configure –help
1 |
|
-
–with-debug-level:设置编译的级别,可选值为release、fastdebug、slowdebug,越往后进行的优化措施就越少,带的调试信息就越多。还有一些虚拟机调试参数必须在特定模式下才可以使用。默认值为release。
-
–enable-debug:等效于–with-debug-level=fastdebug。
-
–with-native-debug-symbols:确定调试符号信息的编译方式,可选值为none、internal、external、zipped。
-
–with-version-string:设置编译JDK的版本号,譬如java-version的输出就会显示该信息。这个参数还有–with-version-{part}={value}的形式,其中part可以是pre、opt、build、major、minor、security、patch之一,用于设置版本号的某一个部分。
-
–with-jvm-variants:编译特定模式(Variants)的HotSpot虚拟机,可以多个模式并存,可选值为server、client、minimal、core、zero、custom。
-
–with-jvm-features:针对–with-jvm-variants=custom时的自定义虚拟机特性列表(Features),可以多个特性并存,由于可选值较多,请参见help命令输出。
-
–with-target-bits:指明要编译32位还是64位的Java虚拟机,在64位机器上也可以通过交叉编译生成32位的虚拟机。
-
–with-{lib}={path}:用于指明依赖包的具体路径,通常使用在安装了多个不同版本的BootstrapJDK和依赖包的情况。其中lib的可选值包括boot-jd、freetype、cups、x、alsa、libffi、jtreg、libjpeg、giflib、libpng、lcms、zlib。
-
–with-extra-{flagtype}={flags}:用于设定C、C++和Java代码编译时的额外编译器参数,其中flagtype可选值为cflags、cxxflags、ldflags,分别代表C、C++和Java代码的参数。
-
–with-conf-name:指定编译配置名称,OpenJDK支持使用不同的配置进行编译,默认会根据编译的操作系统、指令集架构、调试级别自动生成一个配置名称,譬如“linux-x86_64-server-release”,如果在这些信息都相同的情况下保存不同的编译参数配置,就需要使用这个参数来自定义配置名称。
编译
1 |
|
1 |
|
验证
1 |
|
QA
-Werror=stringop-truncation
make images
时报错如下:
1 |
|
引发错误的原因是这段[-Werror=stringop-truncation],GCC在8.0之后的版本加入了stringop truncation的验证警告,这里是因为出现了警告导致编译不通过,那就禁止掉警告再进行编译。
1 |
|
重新配置
1 |
|