Pythonソースのコンパイル

4432 ワード

なぜコンパイルできるのか
通常、Windowsの下にソフトウェアをインストールし、実行可能ファイルをダウンロードするだけで、 までインストールを完了することができます.Linuxでは、ソフトウェアのソースコードを取得し、自分でコンパイルして実行可能なファイルを生成してインストールすることができます.ソースコードを使うメリットは何ですか?必要に応じてソフトウェアを修正したり、発見されたがメーカーに更新されていない脆弱性を事前に修正したりすることができます.これがオープンソースのメリットです.
ソースコード、実行可能ファイルとは
ソースコードはプログラミング言語で作成されたプログラムで、実はテキストファイルで、テキストエディタで編集することができます.実行可能ファイルはオペレーティングシステムが認識するバイナリプログラムです.ソースコードを実行可能ファイルにするには、ソースコードを する必要があります.
C言語のコンパイラはgccです
コンパイルはどのようなプロセスですか
ソフトウェアのソースコード(文書ドキュメント)+システムの既存の関数ライブラリ、コンパイラのコンパイルを経て、実行可能なファイル関数ライブラリを生成するのは何ですか?Pythonが多くの外部のモジュール/ライブラリを呼び出していくつかの機能を実現するように、ソフトウェアもシステムの関数でいくつかのタスクを完了するため、コンパイル時に書き込み、プログラムの実行時に呼び出す必要があります.
makeとconfigure
1つのソフトウェアは往々にして1つのソースファイルだけではなくて、もし手動ですべてのソースファイルに対してコンパイルを行うならば、とても疲れて、幸いにも1つのとても役に立つツールmakeがあって、自動的にコンパイルの過程を完成することができます.では、makeは何に基づいてコンパイルされますか?彼は現在のディレクトリの下でMakefile/makefileファイルを検索します.このファイルには必要なすべての内容が表示されます.しかし、この書類は生まれながらにして、変わらないものではない.
さまざまなLinuxシステムの内部環境が異なるため、ソフトウェア開発者は環境が要求に合っているかどうかを自動的に検出し、各環境に特定のMakefile/makeefileファイルを生成するプログラムを作成します.configureです.
なお,ソースコードが修正されて再コンパイルされるとmakeは変動する部分を認識し,インクリメンタル更新を行うことができる.
Tarballファイル
ソースコードは純粋なテキストファイルであり、ソフトウェア開発者が直接これらの純粋なテキストファイルを提供すると、開発者の帯域幅が浪費され、ユーザーがダウンロードしにくくなります.
したがって、Tarballファイルは、ソフトウェアのすべてのソースコードをtarでパッケージ化し、圧縮技術で圧縮し、通常gzipを使用するため、一般的な拡張子は*.tar.gzまたは*.tgzである.しかし、その後圧縮効率の高いbzip 2が現れたため、拡張子も*.tar.bz2などになる.
Tarballファイルには、通常次のものが含まれます.
  • ソースファイル
  • 検出プログラムファイル(configureやconfigなど)
  • ソフトウェアの簡単な説明とインストールの説明(READMEまたはINSTALL)
  • tarballソフトウェアをインストールするには
  • ソースコードをダウンロードします.リンク
  • を解凍し、ソースコードがあるディレクトリのREADME/INSTALLを読みます./usr/local/srcディレクトリの下に解凍することをお勧めします.
  • ./configure'--enable-framework[=DIR]':ソースコードが存在するディレクトリのconfigureを実行し、Makefileファイルを生成します.最終実行可能ファイルのインストールディレクトリを指定できます./usr/local/bin/でインストールすることを推奨します.
  • ./configure --enable-framework=/Users/ronald/Library/Frameworks
  • make:ディレクトリの下でmakeプログラムを実行し、Makefileファイルを探し、ファイルの内容に基づいてコンパイルします.生成された実行可能ファイルは、現在のディレクトリの下に保存されます.
  • make install:makeはMakefileファイルのinstallのオプションに従って、コンパイル済みの実行可能ファイルを指定したディレクトリにインストールし、インストールを完了します.

  • 実測
    ➜  Python-2.7.9  ./configure
    checking build system type... x86_64-apple-darwin14.5.0
    checking host system type... x86_64-apple-darwin14.5.0
    ...
    configure: checking for device files
    checking for /dev/ptmx... yes
    checking for /dev/ptc... no
    checking for %lld and %llu printf() format support... yes
    checking for %zd printf() format support... yes
    checking for socklen_t... yes
    checking for build directories... done
    checking for ensurepip... no
    configure: creating ./config.status
    config.status: creating Makefile.pre
    config.status: creating Modules/Setup.config
    config.status: creating Misc/python.pc
    config.status: creating Modules/ld_so_aix
    config.status: creating pyconfig.h
    creating Modules/Setup
    creating Modules/Setup.local
    creating Makefile
    
    ➜  Python-2.7.9  make
    ....
    Python build finished, but the necessary bits to build these modules were not found:
    _bsddb             _sqlite3           _ssl
    bsddb185           dbm                dl
    gdbm               imageop            linuxaudiodev
    nis                ossaudiodev        readline
    spwd               sunaudiodev        zlib
    To find the necessary bits, look in setup.py in detect_modules() for the module's name.
    
    running build_scripts
    creating build/scripts-2.7
    copying and adjusting /Users/chao/Downloads/Python-2.7.9/Tools/scripts/pydoc -> build/scripts-2.7
    copying and adjusting /Users/chao/Downloads/Python-2.7.9/Tools/scripts/idle -> build/scripts-2.7
    copying and adjusting /Users/chao/Downloads/Python-2.7.9/Tools/scripts/2to3 -> build/scripts-2.7
    copying and adjusting /Users/chao/Downloads/Python-2.7.9/Lib/smtpd.py -> build/scripts-2.7
    changing mode of build/scripts-2.7/pydoc from 644 to 755
    changing mode of build/scripts-2.7/idle from 644 to 755
    changing mode of build/scripts-2.7/2to3 from 644 to 755
    changing mode of build/scripts-2.7/smtpd.py from 644 to 755
    /usr/bin/install -c -m 644 ./Tools/gdb/libpython.py python.exe-gdb.py
    
    setup.py missing.append
    ソフトウェアのアンインストール
    インストールディレクトリrm -rf /usr/local/bin/xxxの削除
    参考資料
    《鳥哥的linux私房菜》第22章ソフトウェアインストール:ソースコードとTarball