我尝试在VM(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'
我想我有一些包裹不见了,但是哪个呢?
您必须为您的内核版本安装linux headers软件包。对metapackage尝试以下操作:
# 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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句