0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

m1macのターミナルをintelmac化する

Posted at

私はこの記事を、2ヶ月以上前の記憶を頼りに書いているため、内容の正確性は他の記事には及びません。ほとんど備忘録のためだけに書いているようなものなのでご了承ください。

この記事が役立つかもしれない状況

  • intelmacで動く実行ファイルを作りたいが手元にM1macしかない(pyinstallerなどはintelmacで作業しないとintelmacで動くファイルにならない)。
  • なのでM1macにIntelmacのpython環境を構築したい
  • Appleシリコンとintelプロセッサの環境でターミナルを分割したい

作業環境

MacBook Air (m1チップ)
os: Monterey ver.12.2.1
シェル : zsh

ターミナルを2つ用意する(Rosettaが有効のものと無効のもの)

ターミナルを2つ作るのに参考になる記事↓
https://qiita.com/funatsufumiya/items/cec08f1ba3387edc2eed

Rosettaはm1macでintelプロセッサを動かすのに必要なのでintel用のターミナルはRosettaが有効である必要があります。
デフォルトのターミナルはRosettaが無効なのでターミナルをもう一つ作ってそちらはRosettaを有効にすればよいことになります。Rosetta有効ターミナルにはintelmac用のhomebrew等々をインストールしてpython環境を1から構築してください。この時zshrcとzprofileへのパス等の設定が少しややこしいです。

zprofile内に書くべきこと

arm64はm1mac、x86_64はintelmac用の環境変数に対応しています。下の内容は簡単にいうと "uname -m" が arm64 だったらm1mac用の環境変数を、そうでなければintel用の環境変数を適用するということです。

if [ "$(uname -m)" = "arm64" ]; then
  # arm64
  export PYENV_ROOT="$HOME/.pyenv_arm64"
  export PATH="$HOME/.pyenv_arm64/bin:$PATH"
  eval "$(pyenv init --path)"
else
  # x86_64
  export PYENV_ROOT="$HOME/.pyenv_x64"
  export PATH="$HOME/.pyenv_x64/bin:$PATH"
  eval "$(pyenv init --path)"
fi

zshrc内に書くべきこと

if [ "$(uname -m)" = "arm64" ]; then
  eval "$(/opt/homebrew/bin/brew shellenv)"
  export PATH="/opt/homebrew/bin:$PATH"
  export PYENV_ROOT="$HOME/.pyenv"
  export PATH="$PYENV_ROOT/bin:$PATH"
  eval "$(pyenv init --path)"
  eval "$(pyenv init -)"
  export PATH="/opt/homebrew/bin:$PATH"
  alias ibrew=/usr/local/bin/brew
  alias ibrew="arch -x86_64 /usr/local/bin/brew"
  alias eagle='open -n -a EAGLE'
  alias g++="/usr/local/bin/g++-10 -std=c++17 -Wall -Wextra -Wconversion -pedantic"
  alias gcc="/usr/local/bin/gcc-10 -std=c99 -Wall -Wextra"
  export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
else
  eval "$(/usr/local/bin/brew shellenv)"
  export PATH="/usr/local/bin:$PATH"
  export PYENV_ROOT="$HOME/.pyenv_x86_64"
  export PATH="$PYENV_ROOT/bin:$PATH"
  eval "$(pyenv init --path)"
  eval "$(pyenv init -)"
fi

終わりに

なんか自分でもよくわかっていないのですがこれで動きました...
詳しい方いらっしゃったらアドバイスください。

ちなみに"uname -m"とターミナルに打ち込むと現在自分がどの環境で動かしているのか見られますので確認にどうぞ。

"x86_64"→intel
"arm64"→m1

「ターミナル intel化」でググると色々出てきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?