스프링 공부를 시작하기 위해 개발 환경을 구축하는 과정에서 여러 에러가 발생했다.

시작부터 아주 막막했던 경험을.. 나만 하길 바라면서 해결 과정을 간단히 정리한다.

 

1. IntelliJ IDEA 최신 버전 설치

기존에 2020 IntelliJ IDEA Community 버전이 설치되어있었는데, 이 버전에서 프로그램이 제대로 실행되지 않았다.

https://www.jetbrains.com/idea/download/other.html에서 최신 버전을 설치해준다.

기존에 설치된 버전에 덮어쓰기 해주면 된다.

 

2. Gradle 설치

터미널에서 아래 명령어 한 줄만 입력하면 된다.

$ brew install gradle

 

아래 명령어로 설치된 버전을 확인할 수 있다.

$ gradle --version

 

3. 최신 버전의 JDK 설치

IntelliJ로 이동해서 JDK 최신 버전을 설치한다. 내가 듣는 강의에서 jdk 17 버전 이상을 설치하라해서 17 버전을 설치했다.

Cmd+; 단축키로 Project Structure로 이동한 뒤, SDK > Download JDK를 누르면 아래 창이 뜬다. 아래와 같이 17 버전을 설치 및 적용한다.

 

Cmd+, 단축키로 Setting으로 이동한 뒤, Build,Execution,Deployment > Compiler > Java Compiler로 이동한다.

Project bytecode version을 17로 변경해준다.

 

이번엔 Build,Execution,Deployment > Build Tools > Gradle로 이동해서 Gradle JVM을 마찬가지로 방금 설치한 17버전으로 선택해준다.

 

4. Apply !

확인을 위해 스프링 테스트 코드를 실행하면 에러 없이 잘 돌아간다.

 

m1의 iterm2 초기 세팅 과정에서 powerlevel10k를 설치했다. (powerlevel10k 설치 방법)

모든 설치 과정을 마치니 다음과 같은 상태가 되었다.

위처럼 이런식으로 경로만 뜨고 username이 표시 안 됐다.

 

내가 원하는 거 :

 

찾아보니 .zshrc 파일에 아래 내용을 추가하라던데 이 방법으로는 내 문제가 해결 되지 않았다.

# .zshrc 파일
prompt_context() {
	if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
		prompt_segment black default "%(!.%{%F{yellow}%}.)$USER"
	fi
}

 

 

해결 방법 : .p10k.zsh 파일을 아래 과정에 따라 수정해준다.

$ vi ~/.p10k.zsh		# .pk10k.zsh 파일 열기

 

 

typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(

...

# context		# 해당 라인을 주석 처리

...

)

 

 

난 왼쪽에 표시하고 싶으니 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS 에 context element를 추가해준다.

  typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
	...
    
    context			# 해당 라인 추가
    
    ...
  )

 

 

username만 표시하고 싶으므로 형식도 바꿔준다.

  # Context format when running with privileges: user@hostname.
  # typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%n@%m' 	# 이 부분을 주석처리하고
  typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%n'		# 이렇게 바꿔준다. 아래도 마찬가지

  # Context format when in SSH without privileges: user@hostname.
  # typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m'
  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n'
  
  # Default context format (no privileges, no SSH): user@hostname.
  # typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m'
  typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n'

 

그럼 아래와 같이 된다.

 

 

 

참고: https://www.reddit.com/r/zsh/comments/e416xp/prompt_elements_with_powerlevel10k/

이 게시글에서는 아래 링크의 튜토리얼을 따라 M1에 openssl1.1.1을 설치할 때와 md5, sha1 소스코드를 컴파일할 때 겪은 문제를 정리한다.

https://indiespark.top/programming/compile-open-ssl-apple-silicon/

 

How to Compile OpenSSL 1.1.1 for Apple Silicon

The long-rumored ARM Mac is on the horizon. With this comes the big work of porting and re-compiling current applications. But many Mac App Store apps are dependent on OpenSSL, which doesn’t yet su…

indiespark.top

 

 

1. fatal error: 'inttypes.h' file not found

Building the ARM Half 단계에서 $ caffeniate make 을 입력했더니 다음과 같은 에러가 발생했다.

에러문

더보기

perl "-I." -Mconfigdata "util/dofile.pl" \
    "-oMakefile" include/crypto/bn_conf.h.in > include/crypto/bn_conf.h
perl "-I." -Mconfigdata "util/dofile.pl" \
    "-oMakefile" include/crypto/dso_conf.h.in > include/crypto/dso_conf.h
perl "-I." -Mconfigdata "util/dofile.pl" \
    "-oMakefile" include/openssl/opensslconf.h.in > include/openssl/opensslconf.h
/Applications/Xcode.app/Contents/Developer/usr/bin/make depend && /Applications/Xcode.app/Contents/Developer/usr/bin/make _all
cc  -I. -Iinclude -fPIC -arch arm64 -isysroot /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -O3 -Wall -DL_ENDIAN -DOPENSSL_PIC -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -D_REENTRANT -DZLIB -DNDEBUG  -MMD -MF apps/app_rand.d.tmp -MT apps/app_rand.o -c -o apps/app_rand.o apps/app_rand.c
clang: warning: no such sysroot directory: '/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk' [-Wmissing-sysroot]
clang: warning: using sysroot for 'MacOSX' but targeting 'iPhone' [-Wincompatible-sysroot]
In file included from apps/app_rand.c:10:
In file included from apps/apps.h:13:
In file included from ./e_os.h:16:
In file included from include/openssl/e_os2.h:243:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.0/include/inttypes.h:21:15: fatal error: 'inttypes.h' file not found
#include_next 
              ^~~~~~~~~~~~
1 error generated.
make[1]: *** [apps/app_rand.o] Error 1
make: *** [all] Error 2

해결

"Xcode-beta.app"을 "Xcode.app"으로 수정하면 된다. 자세한 openssl 과정은 링크 참고.

"darwin64-arm64-cc" => {
    inherit_from     => [ "darwin-common", asm("aarch64_asm") ],
    CFLAGS           => add("-Wall"),
    cflags           => add("-arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk"),
    lib_cppflags     => add("-DL_ENDIAN"),
    bn_ops           => "SIXTY_FOUR_BIT_LONG",
    perlasm_scheme   => "macosx",
},

 

 

2.  md5 관련 컴파일 에러

해결

아래 명령어를 입력해 경로를 변경 해준다.

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl@3/lib/

그런데 이 경우 x86_64에서는 해결이 되는데 arm64에서는 여전히 에러다..

.

.

.

해결!!!!!했다!!!

 

원했던 것

arm64 아키텍처에서도 openssl라이브러리 사용한 c프로그램 정상 실행

 

c프로그램 컴파일 시 에러문

3 warnings generated. ld: warning: ignoring file /usr/local/opt/openssl/lib//libcrypto.dylib, 
building for macOS-arm64 but attempting to link with file built for macOS-x86_64 Undefined symbols 
for architecture arm64: "_MD5_Final", referenced from: _main in md5-46c6b0.o "_MD5_Init", referenced 
from: _main in md5-46c6b0.o "_MD5_Update", referenced from: _main in md5-46c6b0.o 
ld: symbol(s) not found for architecture arm64

 

 

해결

위에서 openssl 설치할 때 만든 ~/openssl-1.1.1g-arm64 폴더로 이동해서 아래 명령어 순서대로 입력

./Configure CC=clang CXX=clang++ CFLAGS="-arch arm64" CXXFLAGS="-arch arm64" LDFLAGS="-L/usr/local/opt/openssl/lib" CPPFLAGS="-I/usr/local/opt/openssl/include"
make
make install

 

3. sha1 관련 컴파일 에러

 

c프로그램 컴파일 시 에러문

Undefined symbols for architecture arm64:
  "_SHA1_Final", referenced from:
      _do_fp in sha1-0d35b4.o
  "_SHA1_Init", referenced from:
      _do_fp in sha1-0d35b4.o
  "_SHA1_Update", referenced from:
      _do_fp in sha1-0d35b4.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

해결

컴파일 할 때 -lcrypto 옵션 붙여줘야 함ㅋㅅㅋ

 

행복해..사실 안 행복해... 이걸 대체 몇 시간을

 

 

 

Ubuntu 22.04를 설치했는데 한글 입력이 되지 않았다.

설정에서 언어를 한글로 바꾸는 등 별 뻘짓을 다 했는데 키보드 설정을 손 댔어야 했다.

 

설정 방법은 다음과 같다.

 

1. ibus-hangul 패키지 설치

한글 패키지가 설치 되어있지 않다면 터미널에 아래 명령어를 입력해 설치해준다.

$ sudo apt-get install ibus ibus-hangul

 

2. 아래 명령어를 입력해 IBus 기본 설정 창으로 이동해 입력기 탭에서 Korean-Hangul을 추가한다.

$ ibus-setup

 

3. [설정] - [키보드] 창으로 이동해 Korean (Hangul)을 추가한다.

 

4. 추가 후 [기본 설정]을 클릭하면 한영 전환 키를 확인하고 변경할 수 있다.

+ Recent posts