環境構築・零

環境構築のその先へ

valgrindをMacOSCatalina(カタリナ)でビルドする。

MacOSCatalina 64bit

※ 当然、Xcode&commandlinetoolsのビルド対象も64bitです。

Xcode&commandlinetoolsはAppStoreまたはシステム環境設定→ソフトウェアのアップデートやAppleDeveloplerのサイトから、手に入れます。Xcodeなどを入れる環境構築の話題は省略します。

stackoverflow.com

github.com

結論

brew install --HEAD https://raw.githubusercontent.com/sowson/valgrind/master/valgrind.rb

これで通ります。実行もできます。QtCreatorでvalgrind指定できます。

※ビルドできませんでした。

× git://sourceware.org/git/valgrind.git

※ ビルドできても、実行結果がバグってます。

git clone https://github.com/sowson/valgrind

cd valgrind

./autogen.sh

64bitビルド ( --enable-only64bit )

./configure --prefix=$HOME/valgrind_bin --enable-only64bit

32bitビルド

./configure → make ↓

ld: symbol(s) not found for architecture i386

$HOME/valgrind_bin (シェルが集まります)

置き換えの手順は踏まなくてもよいです...

valgrind/coregrind/Makefile内、153行目付近にあるam_append_19を置換

am__append_19 = \ 
        /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/mach_vm.defs \
        /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/task.defs \
        /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/thread_act.defs \
        /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/vm_map.defs

valgrindフォルダ内

make

ld: symbol(s) not found for architecture x86_64

sudo make install

※ $HOME/valgrind_binが生成されます

下記は使用しません。

valgrind/coregrind

mkdir $HOME/valgrind_bin

make

make install

これでカタリナでビルドが通ります。

ビルド中、もしPerlでuseがno found commandなどになった場合、/usr/bin/perlを指定します。場合に応じて、cpanでlocal::libをインストールして、cpanがなければ入れます。ちょっと試すときvalgrind/coregrind内でmakeを実行することも考慮します。

QtCreatorでvalgrindとcallgrindを設定することができるようになります。

C++を覚えるとき、メモリリークを回避するためにガーベッジコレクション(GC)を導入したいと思うようになりました。MacGCが導入できるC++IDEを探しているとなじみの深いQtCreatorがおすすめの記事が海外でありました。communityeditonを使おうとしたときに、遭遇し解決したビルド例です。私のMBAのマシン性能はあまりに弱いため、valgrindが終了を返すのに時間がかかり本体に熱を持ち始め諦めましたが、我こそはという人がvalgrindを使い終了できるか試すのもよいのではないでしょうか。結果論ですが、homebrewは対応していなくてもPATHを通せばビルドできます。

今年もありがとうございました。来年もよろしくお願いします。

C++は機械に近い、人間力は道具を使うこと。

追記

vim8.1 · GitHub

下の方のEmacsビルドでMacのビルドツールを設定するコマンドも参照するといいかもしれない。

valgrind install path [ $HOME/valgrind (例) ]

before

export PATH=$HOME/valgrind/coregrind:$PATH
export PATH=$HOME/valgrind/callgrind:$PATH
export CPPFLAGS="$HOME/valgrind/include"

after

export PATH=$HOME/valgrind_bin/bin:$PATH
export CPPFLAGS="$HOME/valgrind/include"

valgrind: Unknown/uninstalled VG_PLATFORM 'amd64-darwin'

※ 出力結果がこうなります。

追記、カタリナを最新にするとcoregridのみビルドできる。ほかはx86_64に対応していなくてビルドエラーになる

ビルドは通るけれど出力結果でつまります。手動でビルドすべきではありません。homebrew/linuxbrewを使おう...

brew pin valgrind

※ 忘れずに...

Copyright © 2007-2020 Takayuki Kamiyama. All Rights Reserved.