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

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

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

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

make

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

makefile

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

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Q&A

0回答

811閲覧

”make[1]: *** No rule to make target `DStrCat.c', needed by `DStrCat.o'. Stop.”について

退会済みユーザー

退会済みユーザー

総合スコア0

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

make

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

makefile

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

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

0グッド

0クリップ

投稿2020/06/17 06:18

編集2020/06/17 06:18

Makeコマンド入力時、Makefileのあるディレクトリ にて以下エラーが発生してしまいます。

html

1make[1]: *** No rule to make target `DStrCat.c', needed by `DStrCat.o'. Stop. 2make: *** [libs] Error 2

作成のための規則がないとエラー文で出ていますが、原因がわからず困っております。

PATHの問題なのか....

xcodeはインストール済みで、brew doctorなどでのエラーも修正済みですが、原因に心当たりのある方などいらっしゃいますでしょうか

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/06/17 06:35

出どころというのはどういう意味合いでしょうか。すみません、参考書通りに進めていたら発生してしまったため、色々と分からない点が多いです。 Makefileの中身はかなり長いのですが以下 ーーーーーーーーーーーーーーーーーーーーーーーーーーー # Generated automatically from Makefile.in by configure. #----------------------------------------------------------------------------- # # NcFTP makefile for the platform macosx, on the host macbook-pro.local. # #----------------------------------------------------------------------------- VER= CC=gcc CFLAGS=-D_REENTRANT -D_LARGEFILE64_SOURCE -O2 -Weverything -Wno-unknown-warning-option -Wno-disabled-macro-expansion -Wno-missing-variable-declarations -Wno-date-time -Wno-format-y2k -DMACOSX #CC=gcc #CFLAGS=-O2 -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wshadow -Wbad-function-cast -Wwrite-strings -Wconversion STRIPFLAG=-Wl,-x STRIP=strip prefix=/usr/local exec_prefix=${prefix} BINDIR=${exec_prefix}/bin SYSCONFDIR=${prefix}/etc mandir=/usr/local/share/man INSTALL=/usr/bin/install -c INSTALL_PROGRAM=${INSTALL} INSTALL_DATA=${INSTALL} -m 644 SHELL=/bin/sh all: progs -@/bin/ls -l bin -@echo 'Done.' -@echo -@echo '** Please report any problems to http://www.NcFTP.com/contact/ **' libs: @( cd ./Strn ; $(MAKE) "CC=$(CC)" "CFLAGS=$(CFLAGS)" ) @( cd ./sio ; $(MAKE) "CC=$(CC)" "CFLAGS=$(CFLAGS)" ) @( cd ./libncftp ; $(MAKE) "CC=$(CC)" "CFLAGS=$(CFLAGS)" ) progs: libs @test -d bin || mkdir bin @( cd ./ncftp ; $(MAKE) "CC=$(CC)" "CFLAGS=$(CFLAGS)" "STRIP=$(STRIP)" ) @( cd ./sh_util ; $(MAKE) "CC=$(CC)" "CFLAGS=$(CFLAGS)" "STRIP=$(STRIP)" ) @( cd ./vis ; $(MAKE) "CC=$(CC)" "CFLAGS=$(CFLAGS)" "STRIP=$(STRIP)" ) install: @( cd ./ncftp ; $(MAKE) "CC=$(CC)" "CFLAGS=$(CFLAGS)" ) @( cd ./sh_util ; $(MAKE) "CC=$(CC)" "CFLAGS=$(CFLAGS)" ) @( cd ./vis ; $(MAKE) "CC=$(CC)" "CFLAGS=$(CFLAGS)" ) -@test -z "$(DESTDIR)" || mkdir -p "$(DESTDIR)" 2>/dev/null -mkdir -p "$(DESTDIR)$(prefix)" "$(DESTDIR)$(BINDIR)" "$(DESTDIR)$(SYSCONFDIR)" "$(DESTDIR)$(mandir)" "$(DESTDIR)$(mandir)/man1" 2>/dev/null -@echo '..... Installing the programs .....' $(INSTALL_PROGRAM) bin/ncftp "$(DESTDIR)$(BINDIR)/ncftp" $(INSTALL_PROGRAM) bin/ncftpget "$(DESTDIR)$(BINDIR)/ncftpget" $(INSTALL_PROGRAM) bin/ncftpput "$(DESTDIR)$(BINDIR)/ncftpput" $(INSTALL_PROGRAM) bin/ncftpls "$(DESTDIR)$(BINDIR)/ncftpls" $(INSTALL_PROGRAM) bin/ncftpbatch "$(DESTDIR)$(BINDIR)/ncftpbatch" -@test -f "$(DESTDIR)$(BINDIR)/ncftpspooler" && echo /bin/rm "$(DESTDIR)$(BINDIR)/ncftpspooler" && /bin/rm "$(DESTDIR)$(BINDIR)/ncftpspooler" ln "$(DESTDIR)$(BINDIR)/ncftpbatch" "$(DESTDIR)$(BINDIR)/ncftpspooler" # # The visual programs are only built if a working Curses was found. # -test -f bin/ncftpbookmarks && $(INSTALL_PROGRAM) bin/ncftpbookmarks "$(DESTDIR)$(BINDIR)/ncftpbookmarks" -@echo '..... Installing the manual pages .....' $(INSTALL_DATA) doc/man/ncftp.1 "$(DESTDIR)$(mandir)/man1/ncftp.1" $(INSTALL_DATA) doc/man/ncftpget.1 "$(DESTDIR)$(mandir)/man1/ncftpget.1" $(INSTALL_DATA) doc/man/ncftpput.1 "$(DESTDIR)$(mandir)/man1/ncftpput.1" $(INSTALL_DATA) doc/man/ncftpbatch.1 "$(DESTDIR)$(mandir)/man1/ncftpbatch.1" $(INSTALL_DATA) doc/man/ncftpspooler.1 "$(DESTDIR)$(mandir)/man1/ncftpspooler.1" $(INSTALL_DATA) doc/man/ncftpls.1 "$(DESTDIR)$(mandir)/man1/ncftpls.1" -@echo '..... Finishing up .....' -@( cd "$(DESTDIR)$(BINDIR)" ; echo ""; echo "$(DESTDIR)$(BINDIR):" ; /bin/ls -l "ncftp" "ncftpget" "ncftpput" "ncftpls" "ncftpbatch" "ncftpspooler" "ncftpbookmarks" 2>/dev/null | sed 's/^/ /;' ; echo "" ) -@echo 'Done installing NcFTP.' clean: /bin/rm -rf ncftp_all.ncb ncftp_all.opt ncftp_all.plg *.pch SunWS_cache @( cd ./Strn ; $(MAKE) clean ) @( cd ./sio ; $(MAKE) clean ) @( cd ./libncftp ; $(MAKE) clean ) @( cd ./ncftp ; $(MAKE) clean ) @( cd ./sh_util ; $(MAKE) clean ) @( cd ./vis ; $(MAKE) clean ) distclean: clean /bin/rm -f config.cache config.h config.log config.status libncftp/Makefile libncftp/config.h ncftp/Makefile sh_util/Makefile vis/Makefile Makefile.bin Strn/Makefile Strn/config.h Strn/Strn.version sio/Makefile sio/config.h sio/sio.version Makefile ccdv /bin/rm -rf bin @echo "Warning: configure may have automatically patched libncftp/ncftp.h" TMPDIR=/tmp TARDIR=ncftp-$(VER) STGZFILE=$(TARDIR)-src.tar.gz DTARFILE=$(TARDIR)-macosx-export.tar DTGZFILE=$(TARDIR)-macosx-export.tar.gz DBGZFILE=$(TARDIR)-macosx-export.tar.bz2 dtar: -@mkdir $(TMPDIR)/TAR -@mkdir $(TMPDIR)/TAR/$(TARDIR) cp -p Makefile.bin $(TMPDIR)/TAR/$(TARDIR)/Makefile -@mkdir $(TMPDIR)/TAR/$(TARDIR)/bin $(TMPDIR)/TAR/$(TARDIR)/doc cp -p -r bin $(TMPDIR)/TAR/$(TARDIR) chmod 755 $(TMPDIR)/TAR/$(TARDIR)/bin/* -@rm -f "$(TMPDIR)/TAR/$(TARDIR)/bin/ncftpspooler" -@ln "$(TMPDIR)/TAR/$(TARDIR)/bin/ncftpbatch" "$(TMPDIR)/TAR/$(TARDIR)/bin/ncftpspooler" cp -p DONATE.txt $(TMPDIR)/TAR/$(TARDIR) for f in CHANGELOG.txt FIREWALLS_AND_PROXIES.txt LICENSE.txt ; do \ cp -p doc/$$f $(TMPDIR)/TAR/$(TARDIR)/doc/$$f ; \ done cp -p -r doc/man doc/html $(TMPDIR)/TAR/$(TARDIR)/doc find $(TMPDIR)/TAR/$(TARDIR) -type d -exec chmod a+rx {} \; find $(TMPDIR)/TAR/$(TARDIR) -type f -exec chmod a+r {} \; ( cd $(TMPDIR)/TAR ; /usr/bin/tar cvf $(TMPDIR)/TAR/$(DTARFILE) $(TARDIR) ) -@cp -p $(TMPDIR)/TAR/$(DTARFILE) . -@chmod 644 $(DTARFILE) -@rm -rf $(TMPDIR)/TAR -@/bin/ls -l $(DTARFILE) dgz: dtar gzip $(DTARFILE) -@chmod 644 $(DTGZFILE) -@/bin/ls -l $(DTGZFILE) dbz: dtar bzip2 $(DTARFILE) -@chmod 644 $(DTBZFILE) -@/bin/ls -l $(DTBZFILE) sgz gz: ./sh/mksrctar.sh $(TARDIR) $(STGZFILE) '/usr/bin/tar' 'cvf' ーーーーーーーーーーーーーーーーーーーーーーーーーー とあります。 spotlight検索するとxcode内にはDStrCat.cなるファイルはありましたが、現在は~/上でmakeコマンドを打っている状態です。 分からない点が分かっていないので、追加で必要な情報などありましたらご指摘いただきたいと思います。
hoshi-takanori

2020/06/17 06:41 編集

出どころというのはその参考書の名前とか、何をビルドしようとしてるのかなどです。NcFTP をビルドしてるんですね。あと、~/ (ホームディレクトリのことですよね?) で make コマンドを打ってるとのことですが、普通は NcFTP のソースを展開して、そのディレクトリに移動して make するのでは。
退会済みユーザー

退会済みユーザー

2020/06/17 09:46

hoshiさん、ご回答ありがとうございます! 参考書は大津真氏の「これから学ぶ macOSターミナル」です。 おっしゃる通り、初め、ホームディレクトリより作業を行なっておりましたがいくつか問題があり、 Desktopにて作業するに至っておりました。 参考書では 1.公式よりncptf-3.2.5-src.tar.gz(現在は3.2.6なので最新を対象としました)をインストール 2.tarコマンドを用いて展開 3.cdで展開先に移動し、./configureを実行でコンパイル 4.Makefileが作成されるのでlsで確認 5.makeコマンドを実行しDStrCat.cコンパイルができる という流れみたいなのですが、途中でいくつか問題と不明点がございました。 1.公式からのダウンロードがそもそもできなかったため、UKのミラーサイトでダウンロード 2.tarコマンドで展開 3.移動し、./configureを入力するとerrorとwarningがいくつか発生。 *こちらの内容は記録しておりませんでしたので完全に再現できないのですが、 Warningはbrew doctorで確認を推奨するようなことが書かれていたので確認。(ただ、brewからncftp取得をしたわけではないので、関連性があるか不明でした) brew doctorで表示された不要なファイルの処理を行い、健全化。 のち、再度./configureを実行。 ホームディレクトリにMakefileが生成されたので、makeを実行。 In file included from /usr/local/include/stdint.h:59: In file included from /usr/local/include/stdint.h:59: In file included from /usr/local/include/stdint.h:59: (中略) error: #include nested too deeply や /Users/admin/Desktop/ncftp-3.2.6/ncftp/cmds.c:1111:3: warning: format specifies type 'long' but the argument has type 'long long' [-Wformat] . /Users/admin/Desktop/ncftp-3.2.6/ncftp/cmds.c:1111:3: warning: format specifies type 'long' but the argument has type 'long long' [-Wformat] . . (中略) など。また、 make[1]: *** No rule to make target `DStrCat.c', needed by `DStrCat.o'. Stop. make: *** [libs] Error 2 のエラーが発生。 調べると、単にディレクトリが足りないだけではなく、どうやらPATHの設定?などが問題である可能性などが示唆されておりましたが、実際分からなくなってしまっております。 とりあえず、brewでも一応インストールしたり、使用方法分からないながら、xcodeも必要そうだったので落としてみたり.... 色々と操作してしまっておりましたので、関連ファイルを一度削除し、再度教材通りに進め、またエラーが発生すると思うので、逐次エラー内容などを保管しながら進めて行こうかと思っております。
hoshi-takanori

2020/06/17 10:11

試しに https://www.ncftp.com/download/ の Download NcFTP Client から ncftp-3.2.6-src.tar.gz を落としてきて、ビルドしてみましたが、普通にできましたよ。もともと Xcode と brew が入った状態ですが。 DStrCat.c は Strn ディレクトリの中にあって、make すると最初にコンパイルされるソースになります。ので、./configure に失敗していた可能性が高いですね。 ところで、NcFTP をソースからビルドする目的はなんでしょうか? 参考書の目次を確認した限りでは、UNIX コマンドをソースからビルドする練習という感じでしたが、実際に使うことが目的ならば、わざわざ自分でビルドしなくても、brew でインストールすれば十分だと思います。(昔は UNIX を使う上でいろんなツールを自分でビルドするのは必須のスキルでしたが、今は各 OS のパッケージシステムが充実しているので、そんなに必要ってこともない気がします。ビルド自体はともかく、インストール先をどこにするかポリシーを決めるにはそれなりにシステム管理の経験が必要でしょうし。)
退会済みユーザー

退会済みユーザー

2020/06/17 10:17

なるほどです! 非常に参考になります。 目的としては漠然としていますが、とりあえず興味があったので触れてみたいという程度でした。 目的としては弱いですが、せっかくなので理解できればという感じでしょうか。 brewで落とした時に、インストールには成功していたのですが、内容を確認するとjsonファイルとtxtファイルなど合わせて4つ程度の内容となっており、なぜか肝心のconfigureがありませんでした。 私のインストールに問題があったのかもしれません。 参考書においてはのちのpsコマンドや関連コマンドにてどうもコンパイル処理を行う必要性がありそうだったので(体感でしかありませんが...)行った流れですね。 とりあえず、全てリムーブ処理が終わったので、再度行ってみようと思います。 またエラー発生する場合はもしかしたら以前のインストールした際の残骸による干渉などが起きてしまいそうですが、とりあえずやってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問