我有一个源码包:ap-kernelmodule-1.0.14-13.tar.gz
我必须从中编译出一个内核模块,并被指示为我的 Ubuntu 版本(12.10)安装开发工具。格式如下:sudo apt-get install linux-headers-$(uname -r) build-essential
问题#1:什么是uname
?
(当我安装 Ubuntu 时,我输入 sharon 作为我的名字,这也是我的帐户名。每当我打开终端窗口时,sharon@sharon:
就会出现这些字样)根据格式,我应该输入:
sudo apt-get install linux-headers-$(sharon -r) build-essential
或者
sudo apt-get install linux-headers-$sharon -r build-essential
问题 2:以上哪项是正确的?
(我是 Linux 和 Ubuntu 的新手;因此希望得到详细的说明)
答案1
不要复制我的命令,你必须输入它们并使用 Tab 键,因为我的内核可能与你的不同。我逐个解释:
打开终端并输入:
sudo apt-get update
此更新会提醒您的计算机您可能需要的文件。但不会下载任何文件,只会提供有关可下载内容的信息。如果您没有先执行此操作,您可能无法获得最新的安全更新链接或最新版本的软件。
键入时,按标签键,完成命令。开始输入安装命令build-essential
。到达这一步后停止:
sudo apt-get install linux-headers-
接下来应该出现的部分是你的 Linux 内核。因此打开另一个终端并输入以下内容:
uname -r
你应该看到类似这样的内容:
3.2.0-23-generic
现在返回另一个终端并按 tab 键。您应该会看到内核弹出。选择那个。
sudo apt-get install linux-headers-3.2.0-23-generic
现在输入一个空格并添加 build-essential(不要忘记使用 tab 键完成)。
sudo apt-get install linux-headers-3.2.0-23-generic build-essential
现在按下回车键,文件就会下载并帮助您编译代码。
答案2
uname
是必须在命令行中输入的命令。因此,如果您打开终端并输入,uname
它会输出单词Linux
。在您提到的命令中,您会发现-r
。这是 的一个选项uname
。它指示uname
打印内核版本号。因此它基本上会打印出一些数字(例如 3.2.0-41-amd64)。
您应该输入命令
sudo apt-get install linux-headers-$(uname -r) build-essential
就像它写的一样。这$(something)
会告诉您的命令行(更好的词是 shell)执行该命令something
并插入该命令的输出。
因此,对于你的uname
情况(假设我写的数字是正确的,但对于你的情况可能不正确),执行的命令是sudo apt-get install linux-headers-3.2.0-41-amd64 build-essential
。基本上,你只需查找你的内核版本并手动插入即可。
正如您所看到的,您的所有版本都不正确。解决方案看起来有点不同。