makeを使用するにはどのパッケージが必要ですか?

makeを使用するにはどのパッケージが必要ですか?

仮想マシン(32ビットカーネル)内の新しいdebian wheezyでパッケージをコンパイルしようとしています。

cd /tmp/
wget https://github.com/freifunk-gluon/batman-adv-legacy/archive/master.zip
rm -Rf batman-adv-legacy-master
unzip master.zip
cd /tmp/batman-adv-legacy-master/
make
make install

しかし、エラーが発生しました。

/bin/sh: 1: cd: can't cd to /lib/modules/3.2.0-4-686-pae/build
Makefile:35: /lib/modules/3.2.0-4-686-pae/build is missing, please set KERNELPATH
/tmp/batman-adv-legacy-master/gen-compat-autoconf.sh /tmp/batman-adv-legacy-master/compat-autoconf.h
make -C /lib/modules/3.2.0-4-686-pae/build M=/tmp/batman-adv-legacy-master PWD=/tmp/batman-adv-legacy-master modules
make: *** /lib/modules/3.2.0-4-686-pae/build: No such file or directory.  Stop.

私も次のことを試しました。

cd /lib/modules/$(uname -r)/
ln -s /usr/src/batman-adv-2013.4.0/ build
cd -

ところでエラーが発生しました。

gen-compat-autoconf.sh /tmp/batman-adv-legacy-master/compat-autoconf.h
make -C /lib/modules/3.2.0-4-686-pae/build M=/tmp/batman-adv-legacy-master PWD=/tmp/batman-adv-legacy-master modules
make[1]: Entering directory `/usr/src/batman-adv-2013.4.0'
make[1]: *** No rule to make target `modules'.  Stop.
make[1]: Leaving directory `/usr/src/batman-adv-2013.4.0'

いくつかのパッケージを紛失したようですが、どのパッケージですか?

答え1

カーネルバージョンに適したLinuxヘッダーパッケージをインストールする必要があります。メタパッケージについて以下を試してください。

# apt-get install linux-headers-686-pae

マイシステム(amd64)では、インストールされているヘッダーパッケージが見つからないディレクトリをどのようにインポートするかを確認できますbuild

$ dpkg -L linux-headers-3.2.0-4-amd64 | grep ^/lib/modules
/lib/modules
/lib/modules/3.2.0-4-amd64
/lib/modules/3.2.0-4-amd64/source
/lib/modules/3.2.0-4-amd64/build

カーネルモジュールをコンパイルしようとしているので、これが特にあなたのケースに関連していることを付け加えたいと思います。通常、makeプログラムの依存関係にはヘッダーパッケージ(独自の言語とその言語のコンパイラに加えて)が必要です。 Debian では一般的に<project>-dev

答え2

build-essentialDebian でパッケージをコンパイルするにはパッケージが必要です。端末で実行してください。

sudo apt-get install build-essential

また、コンパイルに必要ないくつかの追加パッケージ(gccなど)もインストールされます。これにより問題が解決します。

関連情報