LoginSignup
2
1

More than 1 year has passed since last update.

Ubuntu20.04でCPythonをビルドしてみた

Last updated at Posted at 2022-11-09

1. はじめに

この記事はeeic2022の3年後期実験「大規模ソフトウェアを手探る」の4班の成果報告の記事です。
私たちの班はCPythonに様々な機能を追加していきました。ビルドを終えたら以下の記事も参考にしてみてください。

2. 実行環境

Ubuntu 20.04.5 LTS

3. ビルドの手順

目標

  • ダウンロードしたCPythonソースコードのzipファイル(cpython-main.zip)
  • 解凍したCPythonソースコードのディレクトリ(cpython-main)
  • インストールしたCPythonのディレクトリ(cpython-install)

ファイル名ディレクトリ名は上記のように設定し、これら3つをホームディレクトリに配置することを目標とします。

また、以降では「/home/denjo」がホームディレクトリという前提でコマンドを表示します。

ソースコードzipファイルのダウンロード

GitHub上で公開されているCPythonソースコードをダウンロードします。
緑のCodeというボタンを押した後、Download ZIPを選択しましょう。
手順.png
ダウンロードされたzipファイルをホームディレクトリに移動させてください。

ターミナルでホームディレクトリに移動

$ cd ~

ソースコードzipファイルを解凍

$ unzip cpython-main.zip

解凍したソースコードディレクトリに移動

$ cd cpython-main

ここには、CPythonのソースコードが展開されています。
「configure」というファイルもあるはずなので確認してください。次で使います。

コンパイルの設定

$ CFLAGS="-O0 -g" ./configre --prefix=/home/denjo/cpython-install

./configureはコンパイルに関する設定を行ったり、これからコンパイルを行う環境の情報を入手して適切な対処を行うために実行します。以下で、上記コマンドのオプションについて説明します。

  • CFLAGS="-O0 -g"はデバッガでプログラムを追跡しやすくするためのオプションです。今後CPythonを改造しようと思ってる方は付けたほうがよいでしょう。
-O0
最適化を最低レベルにします。これにより、プログラムの実行順序が最適化によって大きく省略されることがなくなり、デバッガでプログラムの動きを追うときに混乱せずに済みます。
-g
実行可能ファイルにデバッグシンボルを含めます。デバッガでプログラムを実行した際に、コンパイル後の命令列とソースコード上の位置を対応づけて表示させることができます。
  • --prefix=はインストール先ディレクトリを指定するオプションです。
    上記のコマンドでは、ホームディレクトリに「cpython-install」というディレクトリを作り、その中にインストールすることを意味します。

コンパイル

$ make

インストール

$ make install

コンパイルの設定で指定したインストール先ディレクトリが作成され、その中にCPythonがインストールされているはずです。

4. CPythonを利用してみる

インストール先ディレクトリの中の「bin」というディレクトリに移動します。
$ cd ~/cpython-install/bin

その中に「python3」というファイルがあるはずです。それを実行すると、CPythonを対話モードで利用できます。
$ ./python3

またこのディレクトリに「a.py」というファイルを作成し、CPythonでそれを実行することもできます。
$ ./python3 a.py

5. 最後に

これにてCPythonのビルドが完了しました。
ソースコードを変更し再びビルドしてあげれば、CPythonの機能を改造できます。
皆さんもぜひ試してみてください。

2
1
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
2
1