23

Snow Leopardを搭載したMacにValgrindをインストールしようとしていますが、エラーが発生します。これは私がターミナルに入力しているものです。

$ curl -O http://valgrind.org/downloads/valgrind-3.8.1.tar.bz2
$ md5sum valgrind-3.8.1.tar.bz2
$ tar -xjvf valgrind-3.8.1.tar.bz2
$ cd valgrind-3.8.1
$ ./configure
$ make

これは私が得るエラーです。

Making all in coregrind
make[2]: *** No rule to make target `/usr/include/mach/mach_vm.defs', needed by `m_mach/mach_vmUser.c'.  Stop.
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

このエラーを修正するにはどうすればよいですか?

4

4 に答える 4

87

必ずコマンドラインツールをインストールしてください。

xcode-select --install
于 2015-05-27T01:28:48.040 に答える
5

valgrindを適切にコンパイルするための最良の方法は、上記の回答で述べたように「xcode-select--install」コマンドを使用することです。ただし、次善のハックとして、OSX/machソースから/usr/ include / machに次のファイルをダウンロードすることでコンパイルできます(このディレクトリを作成します)。

mach_vm.defs    
task.defs
thread_act.defs
vm_map.defs

これは少し汚いハックですが、大きなXcodeの元のファイルをダウンロード/インストールしたくない場合はうまくいくはずです。

于 2016-01-03T12:05:10.697 に答える
4

どうやら、Macintoshでコンパイルするには、valgrindはファイル/usr/include/mach/mach_vm.defsが存在している必要があります。mach_vm.defsXCodeの一部であるという具体的な参照を見つけることはできませんでしたが/usr/include/mach、XCodeがインストールされているときにの通常のコンテンツのほとんどがインストールされているようです。

何らかの理由でマシンにXCodeをインストールできない場合は、アップルのオープンソースWebサイトのこの部分から、その特定のディレクトリのほとんどのソースファイルを入手できます。

于 2012-11-16T22:53:06.587 に答える
2

システム整合性保護システムがOSXに導入されて以来、rootとしても、ユーザーは変更できません/usr。したがって、必要なファイルを追加するために/ usr / include/machを変更することは不可能になります。唯一の代替手段は、makefile自体を編集することです。

手元のMakefilecoregrind/Makefileはに、machファイルは近くに配置する必要があります/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/(MacOSX10.12.sdkを適切なバージョンのOSXに置き換えます)。

am__append_17160行目あたりに定義された名前のシンボルがあるはずです(異なるバージョンでは他の場所にある可能性があります)。

次のようになります。

am__append_17 = \
    /usr/include/mach/mach_vm.defs \
    /usr/include/mach/task.defs \
    /usr/include/mach/thread_act.defs \
    /usr/include/mach/vm_map.defs

/usr/includeの各インスタンスをに置き換えて/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/、次のようにします。

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

この後、valgrindは正しくコンパイルされるはずです

于 2018-05-27T03:36:08.247 に答える