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 が表示されます。それはすべてそこにあります。

私のメイクファイルは言う

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 に答える