大学の講義てC++を書いていて、大学のPC上でもシンタックスハイライトとか補完とかを効かせながらC++コーディングしたいなと思っていた。 以下はvimで良い感じのC++開発環境を構築したときのメモ。
目標 & 方針
- clangの導入
- vimでC++開発
- 補完はvim-clang
- シンタックスハイライトはcolor_coded
- sudo権限がなく、yumなどの付属のパッケージマネージャを利用することができないので、自前でビルドし、porgでインストールする
環境
(大学のサーバなのでセキュリティ上あまり詳しいことは書けない…)
準備
インストールしたもの一覧
欲しいものはllvm
, vim-clang
, color_coded
のみだが、依存パッケージのインストールされていたバージョンが低かったり、そもそもインストールされていなかったりしていたので、合計10個のパッケージを新規インストールすることになった。
- porg 0.8 (パッケージ管理に使用)
- gcc 6.1.0
- python 2.7.11
- cmake 3.5.2
- llvm 3.8.0 (python 2.7+, gcc 4.7.0+に依存、build時にcmake 3.4.3+が必要)
- lua 5.3.2
- vim 7.4 (luaに依存)
- vim-clang (clang, vimに依存)
- glibc 2.17
- color_coded (clang, vim 7.4p330+, lua 5.1+, gcc 4.9+, glibc 2.15+に依存)
1から順にインストールしていく。
1. porgのインストール
$ tar xzvf porg-0.8.tar.gz $ cd porg-0.8 $ ./configure --disable-grop --prefix=$HOME/local $ make $ make install $ make logme
2. gccのインストール
# `ftp.tsukuba.wide.ad.jp/software/gcc/releases/`から最新版のgccをDLする $ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-6.1.0/gcc-6.1.0.tar.gz $ tar xf gcc-6.1.0.tar.gz $ cd gcc-6.1.0 # 必要なパッケージのDL $ contrib/download_prerequisites # ビルド用ディレクトリ作成 $ mkdir ../build $ cd ../build # configure $ ../configure --disable-multilib --enable-languages=c,c++ --host=x86_64-redhat-linux --build=x86_64-redhat-linux --target=x86_64-redhat-linux --disable-libgcj --with-system-zlib --enable-checking=release --prefix=$HOME/local --with-local-prefix=$HOME/local # ビルド(時間掛かる) $ make -k -j8 STAGE1_CFLAGS='-march=core2 -O3' BOOT_CFLAGS='-march=native -Os' >& /dev/null && echo "GCCビルド成功" || echo "GCビルド失敗" $ porg -lp gcc-6.1.0 "make install"
3. pythonのインストール
$ wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tar.xz $ tar xf Python-2.7.11.tar.xz $ cd Python-2.7.11 $ ./configure --host=x86_64-redhat-linux --build=x86_64-redhat-linux --target=x86_64-redhat-linux --prefix=$HOME/local CFLAGS="-march=core2 -O3" $ make -j8 $ porg -lp python-2.7.11 "make install"
4. cmakeのインストール
$ wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz $ tar xf cmake-3.5.2.tar.gz $ cd cmake-3.5.2 $ ./configure --prefix=$HOME/local $ make -j8 $ porg -lp cmake-3.5.2 "make install -j8"
5. llvmのインストール
# llvmのDL svn co http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_380/final llvm # clangのDL cd llvm/tools svn co http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_380/final clang cd ../... # compiler-rtのDL cd llvm/tools/clang/tools svn co http://llvm.org/svn/llvm-project/clang-tools-extra/tags/RELEASE_370/final extra cd ../../../.. # ビルド用ディレクトリ作成 $ mkdir build $ cd build $ cmake -G "Unix Makefiles" -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_ASM_COMPILER=gcc -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/local -DGCC_INSTALL_PREFIX="${HOME}/local" -DLLVM_PARALLEL_COMPILE_JOBS=8 -DLLVM_PARALLEL_LINK_JOBS=8 -DLLVM_TARGETS_TO_BUILD="X86" ../ # ビルド(すごく時間掛かる) $ make -j8 $ porg -lp llvm-3.8.0 "make install"
6. luaのインストール
$ wget http://www.lua.org/ftp/lua-5.3.2.tar.gz $ tar zxvf lua-5.3.2 $ cd lua-5.3.2 $ make linux $ porg -lp lua-5.3.2 "make install INSTALL_TOP=$HOME/local" # 確認 $ lua -v Lua 5.3.2 Copyright (C) 1994-2015 Lua.org, PUC-Rio
7. vimのインストール
$ wget https://github.com/vim/vim/archive/master.zip $ unzip -d vim master.zip $ cd vim/src $ ./configure --enable-multibyte --enable-xim --enable-fontset --enable-luainterp --with-features=huge --disable-selinux --prefix=$HOME/local --enable-luainterp=yes --with-lua-prefix=$HOME/local --enable-rubyinterp=yes --enable-pythoninterp=yes --with-python-config-dir=$HOME/local/lib/python2.7/config $ make -j8 $ porg -lp vim-7.4 "make install" # 確認 $ ./vim --version | grep +lua +dialog_con_gui +lua +rightleft +windows
8. vim-clangのインストール
vimのプラグインマネージャを利用すれば簡単にインストールできるので省略。
9. glibcのインストール
$ wget http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz $ tar zxvf glibc-2.17.tar.gz $ mkdir glibc-2.17/build $ cd glibc-2.17/build # パスが通ってるディレクトリに入れると既存のglibcと競合して不具合が発生するので、ここでは``$HOME/local/glibc-2.17``に入れた $ ../configure --prefix=$HOME/local/glibc-2.17 --enable-shared --disable-profile --disable-debug $ make # 以下を実行するとエラーが発生する。恐らくバグ。今のところ無視しても問題なく動作している。 # $ make check $ porg -lp glibc-2.17 "make install"
10. color_codedのインストール
vimのプラグインマネージャを利用すれば簡単にインストールできるので、詳細は省略。
ただし、color_codedは使用する前にビルドしておく必要があるが、その際にglib 1.15+へのパスを教えてあげなければ正しくビルドが行えない。
自分はneoBundle.vimを使っていたので以下のように設定した。
NeoBundleLazy 'jeaye/color_coded', { \ 'build': { \ 'unix': 'cmake -DCUSTOM_CLANG=1 -DLLVM_ROOT_PATH=$HOME/local/glibc-2.17 . && make && make install', \ }, \ 'autoload': { 'filetypes' : ['c', 'cpp', 'objc', 'objcpp'] }, \ 'build_commands' : ['cmake', 'make'], \ 'external_commands' : ['clang'] \}
動作確認
適当に.vimrc
書いてcppファイルを開いてみた。
ちゃんと動いた。めでたしめでたし。