質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

makefile

make は、プログラムのビルド作業を自動化するツールです。コンパイル、リンク、インストール等のルールを記述したテキストファイルをmakefileと呼び、このルールに従ってmakeが自動的にビルドを実行する。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

Q&A

0回答

1096閲覧

radare2のmakeに失敗します

fen57

総合スコア47

make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

makefile

make は、プログラムのビルド作業を自動化するツールです。コンパイル、リンク、インストール等のルールを記述したテキストファイルをmakefileと呼び、このルールに従ってmakeが自動的にビルドを実行する。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

0グッド

0クリップ

投稿2021/05/14 08:00

編集2021/05/14 11:30

radare2 1.5.0をソースコードからビルドしようとしています。
ソースコードは以下になります
https://github.com/radareorg/radare2/releases/tag/1.5.0

READMEを読み、

radare2 can be built without any special dependency, just use make and get a working toolchain (gcc, clang, tcc, ..)

とありましたので、gcc, clang, tcc, をインストールしたあと、makeを実行したのですが、以下のエラーで失敗します。

Makefile:245: ターゲット 'capstone-sync' のレシピで失敗しました make[1]: *** [capstone-sync] エラー 1 make[1]: ディレクトリ '/home/guru/work/radare2-1.5.0/shlr' から出ます Makefile:50: ターゲット 'all' のレシピで失敗しました

Makefileの内容は以下になります。

49 all: plugins.cfg libr/include/r_version.h 50 ${MAKE} -C shlr/zip 51 ${MAKE} -C libr/util 52 ${MAKE} -C libr/socket 53 ${MAKE} -C shlr 54 ${MAKE} -C libr 55 ${MAKE} -C binr 245 symstall install-symlink: install-man-symlink install-doc-symlink install-pkgconfig-symlink symstall-www 246 cd libr && ${MAKE} install-symlink 247 cd binr && ${MAKE} install-symlink 248 cd shlr && ${MAKE} install-symlink 249 for DIR in ${DATADIRS} ; do (\ 250 cd "$$DIR" ; \ 251 echo "$$DIR" ; \ 252 ${MAKE} install-symlink ); \ 253 done 254 mkdir -p "${DESTDIR}${BINDIR}" 255 ln -fs "${PWD}/sys/indent.sh" "${DESTDIR}${BINDIR}/r2-indent" 256 ln -fs "${PWD}/sys/r2-docker.sh" "${DESTDIR}${BINDIR}/r2-docker" 257 mkdir -p "${DESTDIR}${DATADIR}/radare2/${VERSION}/hud" 258 cd "$(DESTDIR)$(LIBDIR)/radare2/" ;\ 259 rm -f last ; ln -fs $(VERSION) last 260 cd "$(DESTDIR)$(DATADIR)/radare2/" ;\ 261 rm -f last ; ln -fs $(VERSION) last 262 ln -fs "${PWD}/doc/hud" "${DESTDIR}${DATADIR}/radare2/${VERSION}/hud/main" 263 mkdir -p "${DESTDIR}${DATADIR}/radare2/${VERSION}/" 264 $(SHELL) sys/ldconfig.sh 265 $(SHELL) ./configure-plugins --rm-static $(DESTDIR)/$(LIBDIR)/radare2/last/

makeを成功させるにはどのようにすれば良いでしょうか?

ツールのバージョンは以下です
gcc : 5.4.0
clang : 3.8.0-2ubuntu4
tcc : 0.9.26
make : 4.1
ubuntu : 16.04 x86

よろしくお願いします。

./shlr/zip/makefile の内容です

1 NAME=rz 2 LIBAR=librz.$(EXT_AR) 3 4 include ../../config-user.mk 5 include ../../libr/config.mk 6 include ../../mk/platform.mk 7 include ../../mk/${COMPILER}.mk 8 9 ifeq ($(USE_LIB_ZIP),1) 10 all: 11 rm -f librz.$(EXT_AR) 12 else 13 14 15 LIBAR=librz.$(EXT_AR) 16 RANLIB?=ranlib 17 18 all: $(LIBAR) 19 20 $(LIBAR): zip/libr_zip.$(EXT_AR) 21 ${CC_AR} zlib/*.o zip/*.o 22 $(RANLIB) librz.$(EXT_AR) 23 24 zip/libr_zip.$(EXT_AR): zlib/libr_z.$(EXT_AR) 25 $(MAKE) -C zip 26 27 zlib/libr_z.$(EXT_AR): 28 $(MAKE) -C zlib 29 30 clean: 31 $(MAKE) -C zlib clean 32 $(MAKE) -C zip clean 33 rm -f *.$(EXT_AR) *.${EXT_SO} zlib/*.$(EXT_AR) zip/*.$(EXT_AR) 34 endif

===追記===
git インストール後、 ./configureを行ってもエラーが出てしまいます。
./configureは成功します。

cleaning temporally files... done Final report: - PREFIX = /usr/local - HAVE_LIB_GMP = 0 - HAVE_OPENSSL = 0 - USE_CAPSTONE = 0 - HAVE_FORK = 1 - VERSION = 1.5.0 - USE_LIB_ZIP = 0 - USE_LIB_MAGIC = 0 - DEBUGGER = 1 - CC = gcc - USERCC = gcc - USEROSTYPE = gnulinux - LIBVERSION = 1.5.0 - BUILD = i686-unknown-linux-gnu - HOST = i686-unknown-linux-gnu - TARGET = i686-unknown-linux-gnu

makeのエラー内容は以下です。

gcc -c -MD -fPIC -g -Wall -D__UNIX__=1 -DCORELIB -Iarch -I/home/guru/work/radare2-1.5.0/libr/..//shlr -I/home/guru/work/radare2-1.5.0/libr/..//libr/asm/arch/include -I/home/guru/work/radare2-1.5.0/libr/../shlr/capstone/include -I../asm/arch/8051 -I../asm/arch/include -I../asm/arch/cr16/ -I../asm/arch/ebc/ -Iarch/gb/ -I../asm/arch/h8300/ -I../asm/arch/msp430/ -I../asm/arch/rsp -I../asm/arch/v810/ -I../asm/arch/v850/ -I../asm/arch/x86/udis86 -I../../asm/arch/x86/udis86 -DHAVE_STRING_H=1 -I/home/guru/work/radare2-1.5.0/libr -I/home/guru/work/radare2-1.5.0/libr/include -o /home/guru/work/radare2-1.5.0/libr/..//libr/anal/p/anal_arm_cs.o /home/guru/work/radare2-1.5.0/libr/..//libr/anal/p/anal_arm_cs.c /home/guru/work/radare2-1.5.0/libr/..//libr/anal/p/anal_arm_cs.c:464:30: error: unknown type name ‘arm64_vess’ static const char *vess_name(arm64_vess vess) { ^ /home/guru/work/radare2-1.5.0/libr/..//libr/anal/p/anal_arm_cs.c: In function ‘opex64’: /home/guru/work/radare2-1.5.0/libr/..//libr/anal/p/anal_arm_cs.c:579:9: error: ‘cs_arm64_op {aka struct cs_arm64_op}’ has no member named ‘vess’ if (op->vess != ARM64_VESS_INVALID) { ^ /home/guru/work/radare2-1.5.0/libr/..//libr/anal/p/anal_arm_cs.c:579:19: error: ‘ARM64_VESS_INVALID’ undeclared (first use in this function) if (op->vess != ARM64_VESS_INVALID) { ^ /home/guru/work/radare2-1.5.0/libr/..//libr/anal/p/anal_arm_cs.c:579:19: note: each undeclared identifier is reported only once for each function it appears in /home/guru/work/radare2-1.5.0/libr/..//libr/anal/p/anal_arm_cs.c:580:47: warning: implicit declaration of function ‘vess_name’ [-Wimplicit-function-declaration] r_strbuf_appendf (buf, ",\"vess\":\"%s\"", vess_name (op->vess)); ^ /home/guru/work/radare2-1.5.0/libr/..//libr/anal/p/anal_arm_cs.c:580:60: error: ‘cs_arm64_op {aka struct cs_arm64_op}’ has no member named ‘vess’ r_strbuf_appendf (buf, ",\"vess\":\"%s\"", vess_name (op->vess)); ^ /home/guru/work/radare2-1.5.0/libr/../global.mk:43: ターゲット '/home/guru/work/radare2-1.5.0/libr/..//libr/anal/p/anal_arm_cs.o' のレシピで失敗しました make[3]: *** [/home/guru/work/radare2-1.5.0/libr/..//libr/anal/p/anal_arm_cs.o] エラー 1 make[3]: ディレクトリ '/home/guru/work/radare2-1.5.0/libr/anal' から出ます Makefile:91: ターゲット 'anal' のレシピで失敗しました make[2]: *** [anal] エラー 2 make[2]: ディレクトリ '/home/guru/work/radare2-1.5.0/libr' から出ます Makefile:28: ターゲット 'all' のレシピで失敗しました make[1]: *** [all] エラー 2 make[1]: ディレクトリ '/home/guru/work/radare2-1.5.0/libr' から出ます Makefile:50: ターゲット 'all' のレシピで失敗しました make: *** [all] エラー 2

/libr/anal/p/anal_arm_cs.c がエラーを起こしているようですが、どのように修正すればよいでしょうか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itagagaki

2021/05/14 09:16

エラーは ./makefile:245 ではなく ./shlr/zip/makefile:245 で起きています。そちらを示してください。 (ここで答えるのではなく質問を編集してください)
fen57

2021/05/14 09:42

お返事ありがとうございます。 質問を編集しました。
itagagaki

2021/05/14 09:47

./shlr/zip/makefile では include ../../config-user.mk include ../../libr/config.mk include ../../mk/platform.mk include ../../mk/${COMPILER}.mk となっており、これらをすべて合わせてひとつのmakefileとして解釈したときの245行目でエラーが起きているようです。厄介ですね。 エラーは capstone-sync の作成で失敗したということですから、全 makefile および include している *.mk ファイルから capstone-sync: と書かれているところを grep か何かで見つけてください。
fen57

2021/05/14 09:59

編集しました。 ご助力いただき本当にありがとうございます。よろしくお願いいたします。
itagagaki

2021/05/14 10:11

せっかく編集していただきましたが、Makefileの内容からは原因不明ですね... make -d > log.txt して、makeがどうしようとしたときに失敗したのか調べましょうか。 log.txtを見てもわからなければ、log.txtのそれっぽい箇所を(それもわからなければ全部を)質問に加えてみていただけますか?
fen57

2021/05/14 10:19

makeのlogを追記しました 知識不足でお願いばかりですが。よろしくお願いいたします。
itagagaki

2021/05/14 10:29

"/bin/sh" capstone.sh "https://github.com/aquynh/capstone.git" "next" "7982670984222e2d3bb8117da6225e06d119f56f" "" の実行が失敗したことがわかりましたね。 まだ原因がピンポイントではないので、さらに奥に入って調べなければならなさそうですけど、 なんかGitHubのリポジトリと同期させる処理っぽい気がするので、まずは確認ですが、gitはインストールされていたりします?
fen57

2021/05/14 10:39

gitがインストールされていませんでしたので、インストールしました。 git version 2.7.4 です。 再度makeを行ってもエラーが出るので、make -d > log.txt した結果を追記します。
itagagaki

2021/05/14 11:10

私もradare2 1.5.0をダウンロードしてみました。 gitなしでここまで来たということは、makeの前に ./configure を実行していないのでは。 もしそうなら ./configure を実行して、成功したら make してください。 その前に一応 make clean はしておいたほうがいいかもですね。
fen57

2021/05/14 11:31 編集

make cleanの後、./configure を実行し、成功してもmakeで同じエラーが出てしまいます。 itagagakiさんの環境では、radare2 1.5.0のビルドに成功しましたでしょうか?
itagagaki

2021/05/14 12:33

Ubuntu 20.04 TLS / gcc 9.3.0 でやってみたら、まったく同じ結果になりました。 これ arm64_vess って型が無いってエラーですけど、そんな型どこにも定義されていないんですよね。 で、ググったら、aquynh/capstone というリポジトリの中に見つかりました。 https://github.com/aquynh/capstone/blob/master/include/capstone/arm64.h rader2にも shlr ディレクトリ下に capstone とかあるので、何やら関係していそうです。 すみませんが、私の力はここまでです。ご健闘をお祈りします。
fen57

2021/05/14 15:40

自分でもエラーメッセージで検索しているのですがなかなか解決策が見つからず・・・という状況です。 色々と教えてくださりありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問