본문 바로가기
IT/java

JDK 컴파일하기 ( OpenJDK17 )

by 가능성1g 2024. 7. 7.
반응형

궁극의 자바 이해를 위해 JDK 를 컴파일 해보자. 

 

깃헙 리포지터리 jdk 에 친절하게 컴파일 방법이 나와 있다.

jdk/doc/building.md at master · openjdk/jdk (github.com)

 

jdk/doc/building.md at master · openjdk/jdk

JDK main-line development https://openjdk.org/projects/jdk - openjdk/jdk

github.com

 

소스는 아래 리포지터리의 브런치를 보면, tag 로 찾아볼 수 있다.

21버전이 최신이지만 웬지 최신의 길은 너무도 험난하니 17로 간다!

 

근데 설명서를 읽어보니 친절하게 17 같은 경우 openjdk/jdk17u 라는 이름으로 별도 리포가 있는거 같다.

openjdk/jdk17u: https://wiki.openjdk.org/display/JDKUpdates/JDK+17u (github.com)

 

GitHub - openjdk/jdk17u: https://wiki.openjdk.org/display/JDKUpdates/JDK+17u

https://wiki.openjdk.org/display/JDKUpdates/JDK+17u - openjdk/jdk17u

github.com

좋아! 이걸 이용해 보자.

 

컴파일은 윈도우보다는 리눅스나 mac 을 권장한다고 한다.

wsl 에 ubuntu24.04 LTS 에서 해보자!

 

1. 시스템 패키지 업데이트

sudo apt update
sudo apt upgrade

 

2. 필수 패키지 설치

sudo apt-get install build-essential autoconf

 

3. boot jdk 설치 

jdk 에도 많은 소스가 java 로 되어있어서 보통 직전 jdk 버전을 설치해야 하고 이를 boot jdk 라고 한다.

최신이 아니므로 우린 동일버전으로 설치 한다.

sudo apt-get install openjdk-17-jdk

 

4. 추가 라이브러리 설치

귀찮으니 -y 모두 추가 !!

sudo apt-get install libfreetype6-dev -y
sudo apt-get install libfontconfig-dev -y
sudo apt-get install libcups2-dev -y
sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev -y
sudo apt-get install libasound2-dev -y
sudo apt-get install libffi-dev -y

 

5. 빌드 툴 추가

autoconf, make, bash 필요 ( 기본이라 이것들은 설치 않함 )

sudo apt-get install autoconf -y

 

6. 소스 가져오기 

이제 주인공 두두둥장

git clone https://github.com/openjdk/jdk17u

 

7. configure 실행

엄청나게 많은 옵션이 있어서 겁을주니 예제에 나온거만 실행해보자.

bash configure --enable-debug --with-jvm-variants=server --enable-dtrace

 

** 오류 조치

여기서 나같은 경우엔 zip, unzip 이 없어서 오류 났다 unzip 설치후 재시도!

sudo apt install zip unzip -y

 

bootjdk를 못찾으니 설정파일도 export

export BOOT_JDK=/usr/lib/jvm/java-17-openjdk-amd64

 

하지만 실패 ㅡㅜ

wsl 에서는 윈도우용 cl.exe 를 찾아서 컴파일 하려고 하는데 cpu mismatching 이 일어난다 ㅠㅠㅠㅠㅠㅠㅠ

 

슬픔을 딛고, rocky linux 8 을 설치한 서버에서 다시 시도 해본다!

동일한 과정이지만 패키지 설치에는 dnf 를 이용하면 된다.

 

서버에서는 옵션이 안먹어서 빼고 실행하고 드디어 configure 성공!

bash configure --enable-debug

 

성공하면 사양이 출력된다.

 

 

이제 실제 make 시작!

make

 

그리고 전체 컴파일 make image

완료되면  아래와 같이, 소스 밑에 build/{설정이름}/jdk/에 저장되어 있다.

 

jdk17u/build/linux-x86_64-server-fastdebug/jdk/bin/java 파일 을 버전 찍어 봤다!

 

굳! 컴파일 완료!!

 

역시 크로스 컴파일 또는 wsl 로 하는건 한계가 있는거 같다 =ㅅ= 다음엔 ubuntu 를 역시 직접 깔아서 써야 겠다.

반응형