1

我有一个 64 位 3.9 内核。实际上,我应用了一个补丁并在另一台(32 位)Ubuntu 机器上重建了整个内核,然后我带来了 *.deb 文件并使用“dpkg -i”程序将修补的内核安装到我的 Ubuntu 12.04。这是一个小补丁,没有太大变化,一切正常,除了......

我做了一个“apt-get install module-assistant build-essentials linux-headers-$(uname -r)”。我可以看到 usr/include/src/linux-headers-3.9.0-custom。这一切都在那里。

我的 Makefile 说

make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

但我不可避免地得到:

usr/include/src/linux-headers-3.9.0-custom/scripts/recordmcount: 1: usr/include/src/linux-headers-3.9.0-custom/scripts/recordmcount: 语法错误:单词意外(期望“ )")

当我尝试进行构建时。当我在我的 Ubuntu 32 位 3.2 内核系统上尝试它时,同样的源代码构建成功。

4

1 回答 1

4

这是一个交叉编译的问题。我使用一个 32 位的 Ubuntu 系统来构建一个 64 位的内核,这只是令人头疼的问题。显然脚本等仍然构建为 32 位。(他们必须这样做,因为我的 32 位系统需要使用它们来构建内核。)但是如果将 /usr/src/linux-headers-xxx 目录带到我的 64 位系统,我就不能使用它可以构建任何内核模块,因为它的 /scripts 目录是 32 位的。

我在 64 位机器上重建了 recordmcount,并且成功了。但是还有另一个与 64 位不兼容的脚本,如果不重新构建整个内核就很难构建。

无论如何,如果你交叉编译,你不会得到一个在你的目标系统上可用的 /usr/src/linux-header-xxx/scripts 目录。

于 2013-07-02T21:53:13.300 回答