【解決法】「make: *** No targets specified and no makefile found」エラーの原因と対処方法
Ubuntu、Debian、Red Hatなど、どのLinuxディストリビューションを使用していても、「make: *** No targets specified and no makefile found. Stop.(ターゲットが指定されておらず、makefileが見つかりません)」というエラーに遭遇することがあります。これはGNU Make全体に関わる一般的な問題であるため、さまざまなUnix系システムで発生する可能性があります。
このエラーは、現在の作業ディレクトリに「makefile」または「Makefile」という名前のファイルが存在しないことを意味しています。一見難しそうに思えますが、実は簡単に解決できるケースがほとんどです。本記事では、主な対処方法を2つ紹介します。
方法1:現在のディレクトリでMakefileを探す
まず、現在いるディレクトリでもう一度makeコマンドを実行してみてください。特に、新しいターミナルウィンドウを開いた直後や、前回makeを実行してからcdコマンドで別の場所へ移動していた場合は、意図しないディレクトリにいる可能性があります。
同じエラーが出る場合は、lsやdirコマンドを実行して、現在のディレクトリ内のファイルを確認しましょう。ルートディレクトリ「/」やホームディレクトリ「~」に属するフォルダが表示されているなら、目的のプロジェクトディレクトリに移動できていない証拠です。cdコマンドで正しい場所へ移動してから、再度makeを実行してください。
場合によっては、想定されている場所から大きく外れたディレクトリにいることもあります。たとえば「/var/crash」ディレクトリからmakeを実行しても動作しません。この場所にはクラッシュレポート関連のファイルしか存在せず、そもそもmakeを実行する環境ではないためです。
正しいディレクトリでmakeを実行する
通常、makeコマンドはホームディレクトリ以下にあるプロジェクトフォルダ内で実行するのが基本です。例えば、GNU nanoの最新版をソースからビルドしているなら、「~/nano-2.9.6」のようなディレクトリにcdで移動し、そこでmakeを実行することになります。
makeを実行する前に、もう一度lsコマンドでそのディレクトリ内にmakefileが存在するかどうかを確認しておくと安心です。
configureを実行してMakefileを生成する
正しいプロジェクトディレクトリ内にいてもmakefileが見つからない場合は、./configureを先に実行していない可能性があります。configureコマンドは、GCC(GNUコンパイラ)が適切に動作するための環境を整え、Makefileを自動生成してくれます。
手順としては、プロジェクトディレクトリ内で./configureを実行し、続けてmakeコマンドを実行します。正常にコンパイルが完了したら、sudo make installでインストールできます。
なお、ビルド作業自体はroot権限で行わないのが鉄則です。sudoを使うのはインストール時のみにとどめ、sudo makeのようなコマンドは実行しないようにしましょう。
方法2:カスタムMakefileを指定する
上記の方法で問題が解決すれば、それ以上の作業は不要です。ただし、手動でプロジェクトを構成している場合など、独自のmakefileを作成・使用しているケースでは、以下の2つの特別な状況を考慮する必要があります。
-fオプションで任意のファイル名を指定する
GNU Makeはデフォルトで「makefile」「Makefile」という名前のファイルを探しますが、-fオプションを使えば、それ以外の名前のmakefileも指定できます。
例えば、「makefile.bak」というバックアップ用のmakefileがある場合は、次のように実行します。
make -f makefile.bak
ファイル名は任意のもので構いません。また、-iオプションを併用すると、独自のmakefileや古いmakefileに含まれるエラーを無視してコンパイルを続行できます。ただし、エラーを無視せずにmakefile自体を修正するのが本来の望ましい対応です。
大文字小文字の違いに注意する
もう1つのよくある落とし穴が、ファイル名の大文字・小文字の区別です。Unix系システムでは、以下の5つはすべて別々のファイルとして扱われます。
- Makefile
- makefile
- makeFile
- MakeFile
- MakefilE
手書きで作成したmakefileの綴りが特殊な場合、GNU Makeが認識できないことがあります。自分のコーディングプロジェクト用に作成した場合は、ファイル名を標準的な「makefile」に変更しておくのが確実です。
なお、最初から./configureを正しく実行していれば、適切な環境とMakefileが自動生成されるため、こうしたトラブル自体を未然に防ぐことができます。
-
Windows 10で「指定されたモジュールが見つかりません」エラー(0x0000007e)を修正する方法
「指定されたモジュールが見つかりません」というエラーに悩んでいませんか?0x0000007eエラーの最適な解決方法をお探しの方は、まさにうってつけの記事です。本記事では、この問題の概要と具体的な解決策について詳しく解説します。 「指定されたモジュールが見つかりません」はDLLエラーの一種で、主にWindowsの起動時に表示されます。場合によっては、インターネットに接続したときや特定のアプリケーションを使用した際にも発生することがあります。幸い、この問題の修正はそれほど難しくありません。 無効なレジストリエントリの削除、マルウェアの駆除、破損したシステムファイルのチェックと修復を行うことで、この
-
Windows 10 / 8.1 / 7で「No boot device found」エラーを解決する8つの対処法
Windows 10、8.1、またはWindows 7の起動時に「No boot device found. Press any key to reboot the machine」というエラーメッセージが表示されて困っていませんか?このエラーは、起動情報が保存されているHDDやSSDにシステムがアクセスできなかったことを意味します。つまり、パソコンの電源を入れた際に接続されているすべてのドライブをスキャンしたものの、起動可能なOSが見つからなかった状態です。なお、このエラーメッセージは環境によって以下のように表示が異なる場合があります。No bootable device detected