タグ付けされた質問 「make」

makeに関する質問については、ターゲット間の依存関係を管理することによってビルドプロセスを自動化するユーティリティ。このタグは、make自体に関する質問、またはmakeコマンドラインユーティリティの使用から生じる問題に関する質問に使用します。

3
メイクファイルで指定された依存関係をツリーとして表示する方法は?
問題 メイクファイルの1つ以上のターゲットの依存関係を確認したい。そこで、メイクファイルを解析し、ツリーのような形式(インデント、ascii-art)、またはグラフ(ドット、...)で依存関係を表すことができるプログラムを探しています。 似ている 他の状況でこれを行うプログラムがあります。 pactreeまたはdebtreeは、ascii形式などのツリーの各形式またはdotグラフとしてソフトウェアパッケージの依存関係を表示できます。 gcc -M source_file.c Cソースファイルの依存関係をmakeルールとして表示します。 pstreeは、プロセスツリーのASCII表現を表示します。 進捗 ウェブを検索してもほとんど助けはありませんでした。それは私を試してみるように導いた make --always-make --silent --dry-run some_target | \ grep --extended-regexp 'Considering target file|Trying rule prerequisite' しかし、これを素敵なツリー/グラフとして表現するには、perlまたはpythonでさらに解析コードをハッキングする必要があるようです。そして、この方法で完全で正しいグラフを本当に取得できるかどうかはまだわかりません。 必要条件 いくつかの方法でグラフを制限するのは良いことです(組み込みルールなし、特定のターゲットのみ、深さのみ) -表示可能な形式(「類似」の下のプログラムのように)。 ご質問 これを行うことができるプログラムはありますか? 完全で正しい情報を入手できmake -dnq ...ますか? この情報を取得するより良い方法はありますか? この情報を解析するためのスクリプト/試行はすでに存在しますか?

4
なぜデュアルコアCPUを使用しているときにmakeに-j3オプションを推奨するのですか?
Gentoo Linuxを、設定することが可能であるMAKEOPTSに変数を/etc/portage/make.conf伝えるためにmake、パッケージを構築する際には、並列に実行する必要がありますどのように多くの仕事。私はデュアルコアCPUを持っているので、私は単純に-j2オプションを使用することを選択しました。コアごとに1つのジョブなので、両方とも何かをしなければなりません。「問題」は、デュアルコアCPUを使用しているユーザーに-j3代わりにオプションを設定するよう指示する多くの参考文献があることです。それらのいくつかは次のとおりです。 Gentooハンドブック Gentoo wiki make.conf(5)のマニュアルページ たとえば、Gentooハンドブックには次のように書かれています: 適切な選択は、システムのCPU(またはCPUコア)の数に1を足したものですが、このガイドラインは必ずしも完全ではありません。 しかし、「CPU + 1」ルールの根拠は何ですか?なぜ余分な仕事ですか? make.conf(5)のマニュアルページには次のようにも書かれています: 推奨される設定は、CPUs + 1と2 * CPUs + 1の間です。 また、オプションのmake情報ページとmakeマニュアルページの説明のセクション5.4(Parallel Execution)を読みました-jが、そこには答えがないようです。
18 gentoo  make 

1
makeのすべてのターゲットをリストする方法は?
多数のMakefileを含むプロジェクト構造があり、他のすべてを含む最上位のMakefileがあるとします。 すべての可能なターゲットをリストするにはどうすればよいですか? 私は書くことを知っています make 次に、タブを押して提案を取得するのが一般的ですが、私の場合は10000個のターゲットがあります。これを行うと、結果がさらに通過し、何らかの理由でリストをスクロールするとフリーズします。別の方法はありますか?
18 make 

2
Linuxカーネルモジュールにローカルヘッダーファイルを含める方法
mymod次のようなソースファイルを含むモジュールがあるとします。 src / mod / mymod.c src / inc / mymod.h 私は次のようにmymod.hをインクルードしようとします #include <mymod.h> メイクファイルには含まれてEXTRA_CFLAGS= -I$(shell pwd)/../inc/いますが、カーネルが作成されると、次のようなエラーが表示されます。 mymod.hが見つかりません その理由は、カーネルモジュールが作成されると、このコマンドがmakefileから実行されるためだと思われます:(makeV1 を使用): make -C <path/to/linux/src> M=<path/to/mymod> modules 他の作品では私$(shell pwd)はに拡張されました<path/to/linux>。これは私が望むものではありません。どのようにして指定することができます-Iを指すようにパラメータをsrc/inc私のmymodソースツリー?
17 linux  kernel  compiling  make 

5
複数のコアでコンパイルするときにmakeがハングする原因は何ですか?
昨日、ソースからROOTパッケージをコンパイルしようとしていました。6コアのモンスターマシンでコンパイルしていたので、先に進み、を使用して複数のコアを使用してビルドすることにしましたmake -j 6。コンパイルは最初はスムーズで非常に高速でしたが、ある時点でmake1つのコアで100%CPUを使用してハングしました。 私はいくつかのグーグル検索を行い、ROOT掲示板でこの投稿を見つけました。このコンピューターを自分で作ったので、ヒートシンクを適切に適用しておらず、CPUが過熱しているかどうかが心配でした。残念ながら、ここには冷蔵庫がありません。 lm-sensorsパッケージをインストールし、make -j 6再度実行しましたが、今回はCPU温度を監視しました。温度は高くなりましたが(60 Cに近い)、高温または臨界温度を超えることはありませんでした。 実行しようとしましたmake -j 4がmake、コンパイル中に別の場所で再びハングしました。 最終的には、実行中にコンパイルmakeしましたが、うまくいきました。私の質問は:なぜそれがぶら下がっていたのですか?2つの異なるスポットで停止したという事実により、何らかの競合状態が原因であると推測されmakeますが、-jオプションを提供しているため、すべてを適切な順序で取得するのに十分賢いはずです。
17 linux  compiling  make 

2
.GNU makeファイルのすべてのルールをPHONY?
私の解釈では、基本的にすべてのメイクルールの前に最初に置くべきだと間違っていますか? .PHONY: all of my rules all: echo "Executing all ..." of: echo "Executing of ..." my: echo "Executing my ..." rules: echo "Executing rules ..." この「式」に従わない場合はありますか? http://www.gnu.org/software/make/manual/make.html#Phony-Targets
16 make 

3
「make install」と「sudo make install」の違い
時々私は使用して問題が発生したmake install私に与えるpermission deniedいくつかのフォルダへの書き込み時にエラーが発生しました。だから本能的に使用しますsudo make install。これにより、追加の問題が発生しますか? Debian Etchを使用しています。

2
makefileで現在のディレクトリが変更されないのはなぜですか?
簡単なスクリプトを実行しようとしています。gitリポジトリを特定のディレクトリに複製してcdから、このディレクトリにインストールスクリプトを実行します。 このスクリプトはMakefileにあります。 しかし、cd動作していないようです。インストールスクリプトが見つかりません。 cdスクリプトの後にpwdを追加すると、スクリプトを実行しているディレクトリではなく、スクリプトを実行しているディレクトリが表示cdされます。 どうしたの? git clone http://somerepo ~/some_dir cd ~/some_dir/ pwd python myscript.py install => pwd: /hereIsPathToDirectoryFromWhichIRunTheScript python: 'setup.py'ファイルを開けません:[Errno 2]そのようなファイルやディレクトリはありません また、では機能しません./setup.py。 絶対パスを入力すると~/some_dir/setup.py、スクリプトは同じフォルダー内のリソースにアクセスしようとしているため、後で失敗します。
14 make  cd-command 

1
「互換性のない/usr/lib/libc.aをスキップする」の修正方法
64ビットFedora 16(Verne)で組み込みLinuxターゲットをビルドしようとすると、次のエラーが表示されます。 make[3]: Entering directory `/export/home/git/minerva-5.x/third_party/multifiles' mips-linux-gnu-gcc -EL -O -D_GNU_SOURCE -Wall -isystem /export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/include -c -o md5.o md5.c mips-linux-gnu-gcc -EL -O -D_GNU_SOURCE -Wall -isystem /export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/include -c -o bitmapfs.o bitmapfs.c mips-linux-gnu-gcc -EL -O -D_GNU_SOURCE -Wall -isystem /export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/include -c -o mfcln.o mfcln.c mips-linux-gnu-gcc -EL -Wl,-rpath /export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/lib -L/export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/lib -o mfcln md5.o bitmapfs.o mfcln.o mulfiles.h …
13 fedora  make  glibc 

2
「インストールの実行」-「ドライラン」またはシミュレーターユーティリティの実行をシミュレートしますか?
bashスクリプトを実行して、結果のコマンドを確認する一般的な方法はありますが、実際にはコマンドを実行しません。つまり、「ドライラン」/一種のシミュレーターですか。 実行したいデータベースインストールスクリプト(./configureとmakeを実行した後に実際に "make install")がありますが、それは私が望まないあらゆる種類のものをインストールしています。 ですから、実際に実行する前に、それが何をするのかを正確に確認する方法が必要です-代わりに手動でコマンドを実行することもできます。 そのようなタスクを実行できるユーティリティはありますか(または関連する/類似した何か)

5
menuconfigの観点から2つのカーネル構成ファイルを比較しますか?
2つのカーネル構成ファイル(同じカーネルソース用)がある状況があります。どちらにも必要な機能の一部があります(一方では、USBは正しく機能し、もう一方では、2番目のI2Cが機能します)。 menuconfigの観点から見ると、2つの構成ファイルの違いには、選択されたオプションのほんの一部しか含まれていないことを知っています。(しかし、どれがわからない) ただし、構成ファイルを手動で比較する場合(2つの.configファイル間で融合)、違いを特定するのは簡単ではありません。私はそれらを手動でマージしようとしましたが成功しませんでした。私は最終的に成功すると確信していますが、ファイルがmenuconfigに表示される方法で比較された場合、プロセスははるかに簡単になると考えています。 これは達成できますか?そうであれば、どのように?

2
`make -j`(引数なし)は危険ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 今日何かを構築するとき、私は次のように実行することにしmakeました $ make -j おそらくcabal、-jデフォルトが妥当な制限に設定されている場合など、他のプログラムとは習慣がない。 約20秒後、デスクトップ全体が停止して停止します。活動のさまざまな兆候を探します。ファンは回転しません。HDDライトは緑色に点灯していますが、ディスクアクティビティが聞こえません。うーん。10分の沈黙の後、ようやく何年も前に行った最初のキー操作に対する応答がわかり、ディスクのスラッシングのあまりにも馴染みのある音も聞こえ始めます。20分後、この応答しないマシンの端末にゆっくりと進もうとすると、私は陥没してREISUBを使用しました。 最初は、関係のないデスクトップアプリケーションが原因であると考えました。これは、長い間、インタラクティブなbashセッションにメモリ制限を課して、このような状況に身を置くことができなかったためです。しかし/var/log/syslog、別の話をします。OOMキラーは、疑わしくパックされ、処理されているいくつかのpsダンプを残しました!c++cc1plus これらのダンプの1つの周波数分析を次に示します。 Command Number of appearances 'sh' 322 'c++' 321 'cc1plus' 321 'chrome' 27 'make' 27 'bash' 3 all else combined 120 だから私はGNU makeのmanページをチェックします:(強調を追加) -j [jobs]、-jobs [= jobs]同時に実行するジョブ(コマンド)の数を指定します。-jオプションが複数ある場合は、最後のオプションが有効です。 引数なしで-jオプションを指定した場合、makeは同時に実行できるジョブの数を制限しません。 私は、問題を再現できるかどうかを確認するには消極的だ(私が行うとき、それは痛い、医師をこれを ...)が、調査の結果は、これまでにホームランのように見える:明らかに、make -jそして得られたプロセスの数百人が持っている必要がありますとなってハングし、ディスクスラッシングの原因。そうは言っても、インターネットを検索しても、それに対する警告はあまりわかりません。私は結論に飛びついていますか? でmake -j、それは私には思われるほど危険な? もしそうなら、なぜそこにあるのですか、そしてそれをばか者に証明するために何ができるでしょうか?

1
'cc1'を実行しようとしたGCCエラー
Raspberry Pi用のLinuxカーネルをラップトップ(debian 7を実行)でクロスコンパイルしていました(こちらの手順に従ってください)。しかし、コンパイルを開始すると(make ARCH=arm CROSS_COMPILE=${CCPREFIX})、次のメッセージが表示されます。 CHK include/linux/version.h CHK include/generated/utsrelease.h make[1]: `include/generated/mach-types.h' is up to date. CC kernel/bounds.s gcc: error trying to exec 'cc1': execvp: No such file or directory make[1]: *** [kernel/bounds.s] Error 1 make: *** [prepare0] Error 2 問題は、cc1が見つからないか、gcc正しくインストールされていないことだと考えました(したがって、gccを再インストールしましたapt-get --reinstall install gccが、運はありませんでした)。 gcc -v 与える: Using built-in specs. COLLECT_GCC=gcc …

2
Makeを使用した「ターゲットなし」エラー
私は使用方法makeとメイクファイルを学習しているので、この小さなファイルを書きました: %.markdown: %.html pandoc -o $< $@ しかし、実行するとmake、make: *** No targets. Stop.何が起こっているのですか?
12 make 

3
「make:ターゲット「config」を作成するルールがない」を修正するにはどうすればよいですか?[閉まっている]
閉じた。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にしてください。 6年前に閉鎖されました。 make config端末を入力すると、システムは次のように応答します。 make: *** No rule to make target `config'. Stop. その問題を解決する方法はありますか?
12 make 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.