LoginSignup
0
0

CMake/Ninja/gcc/clang/Poetryをビルドしてインストールする手順メモ

Last updated at Posted at 2024-02-14
  1. 目的
  2. おことわり
  3. 手順補足
  4. 検証環境
  5. cmake
  6. ninja
  7. gcc
  8. clang, clang-format, clang-tidy
  9. Python (Poetry インストールまで)
    1. python3
    2. pip
    3. pipx
    4. pyenv
    5. poetry

目的

C++/Python 開発に必要なツールのローカルインストール(ここではソースをビルドしてホームディレクトリ下にインストールすること)手順をまとめる予定です。

全ての依存関係をローカルインストールで済ませることは目指していません。
例えば CMake の依存ライブラリ OpenSSL (libssl-dev) は予めルート権限でシステムインストールされていることを前提としています。

おことわり

  • この記事では修正提案を歓迎します。ただし、全ての提案を即座に記事へ反映できるとは限りません。
  • 本記事の内容は特定の環境でのみ検証されています。

手順補足

  • インストール先は以下の環境変数で指定しています。
export LOCAL_DIR=$HOME/.local
export LOCAL_BIN_DIR=${LOCAL_DIR}/bin
  • カレントディレクトリは特に明記しない場合 cd $LOCAL_DIR であるとします。
    (影響するのはソースのダウンロード・解凍先で、インストール先に影響はないため不問。)

  • インストールするバージョンは適宜変更してください。

ダウンロードしたソースは make uninstall でツールをアンインストールできるように残しておきます。

検証環境

cat /etc/os-release
cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
gcc -v
gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)
make -v
make -v
GNU Make 4.3
このプログラムは x86_64-pc-linux-gnu 用にビルドされました
Copyright (C) 1988-2020 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 以降 <http://gnu.org/licenses/gpl.html>
これはフリーソフトウェアです: 自由に変更および配布できます.
法律の許す限り、 無保証 です.

cmake

Reference: https://gitlab.kitware.com/cmake/cmake

wget https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3.tar.gz
tar xvf cmake-3.28.3.tar.gz
cd cmake-3.28.3
./bootstrap --prefix=${LOCAL_DIR}
make && make install

ninja

Reference: https://github.com/ninja-build/ninja?tab=readme-ov-file#building-ninja-itself

git clone https://github.com/ninja-build/ninja.git
cd ninja
cmake -Bbuild-cmake
cmake --build build-cmake
./build-cmake/ninja_test # run unit tests
cp build-cmake/ninja ${LOCAL_BIN_DIR}

gcc

gcc のビルドに必要な texinfo を先にインストールする。
Reference: https://www.gnu.org/software/texinfo/

tar xvzf texinfo-7.1.tar.gz
cd texinfo-7.1
./configure --prefix=${LOCAL_DIR}
make && make install

Reference (gcc): https://gcc.gnu.org/install/

  • 参考記事:http://real-c.info/envUnix.html
  • 64bit 環境では gcc のビルド時に libc6-dev-i386 (apt) が必要になる。
    • --disable-multilib オプションを付けると 32bit 環境ターゲットにできなくなるが、上記ライブラリは不要になる。
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-11.2.0/gcc-11.2.0.tar.gz
tar xzf gcc-11.2.0.tar.gz
cd gcc-11.2.0/
./contrib/download_prerequisites
mkdir build
cd build
../configure --enable-languages=c,c++ --prefix=${LOCAL_DIR}
make && make install

${LOCAL_DIR}/bin にパスを通す他、以下の環境変数を設定する。

# GCC
export LD_LIBRARY_PATH=$HOME/.local/lib64:$HOME/.local/lib:$LD_LIBRARY_PATH
export LIBRARY_PATH=$HOME/.local/lib64:$HOME/.local/lib:$LIBRARY_PATH

clang, clang-format, clang-tidy

Reference: https://llvm.org/docs/GettingStarted.html#getting-the-source-code-and-building-llvm

  • 先にローカルインストールした gcc, ninja でビルドする。
  • LLVM_ENABLE_PROJECTS オプションに:
    • clang を指定することで clang が、
    • clang-tools-extra で clang-format, clang-tidy がビルドされる。
git clone --depth 1 https://github.com/llvm/llvm-project.git
cd llvm-project/
cmake -S llvm -B build -G Ninja -DCMAKE_INSTALL_PREFIX=${LOCAL_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=${LOCAL_BIN_DIR}/g++ -DCMAKE_C_COMPILER=${LOCAL_BIN_DIR}/gcc -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra"
cmake --build build
cmake --install build

Python (Poetry インストールまで)

Python 系のツールをインストール際は、$LOCAL_DIR を参照していない。
そのため $HOME/.local 以外にインストールする場合は要検証。

python3

(検証環境では既に python3 が導入済みだが記録としてメモ)

wget https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xz
tar xvzf Python-3.12.2.tar.xz
./configure --prefix=${LOCAL_DIR}
make
make install

pip

Reference: https://pip.pypa.io/en/stable/installation

wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py

pipx

Reference: https://github.com/pypa/pipx?tab=readme-ov-file#install-pipx

python3 -m pip install --user pipx

pyenv

Reference: https://github.com/pyenv/pyenv?tab=readme-ov-file#automatic-installer

curl https://pyenv.run | bash

poetry

Reference: https://python-poetry.org/docs/#installing-with-the-official-installer

curl -sSL https://install.python-poetry.org | python3 -
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