3

好奇心から、Slackwareマシンで2.6.0カーネルをコンパイルしてみました。

root@darkstar:/home/linux-2.6.0# uname -a
Linux darkstar 2.6.37.6-smp #2 SMP Sat Apr 9 23:39:07 CDT 2011 i686 Intel(R) Core(TM)2 Duo CPU     P8600  @ 2.40GHz GenuineIntel GNU/Linux

コンパイルしようとすると:-

root@darkstar:/home/linux-2.6.0# make menuconfig                                                                                         
  HOSTCC  scripts/fixdep
scripts/fixdep.c: In function 'traps':
scripts/fixdep.c:359:2: warning: dereferencing type-punned pointer will break strict-aliasing rules
scripts/fixdep.c:361:4: warning: dereferencing type-punned pointer will break strict-aliasing rules
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/mconf.o
scripts/kconfig/mconf.c:91:21: error: static declaration of 'current_menu' follows non-static declaration
scripts/kconfig/lkc.h:63:21: note: previous declaration of 'current_menu' was here
make[1]: *** [scripts/kconfig/mconf.o] Error 1
make: *** [menuconfig] Error 2

私が間違っていることについてのいくつかのヒント?ありがとう!

4

2 に答える 2

5

そもそもこれをどのようにやっていますか?

通常、kernel.orgから最新のカーネルをダウンロードし、tarballを/ usr / srcにコピーしてから、次のようにします。

 1. tar -zxvvf linux-2.6.xxxx.tar.gz
 2. ln -nsf linux-2.6.xxxx linux   # ie: Update the "/usr/src/linux" symbolic link to
                                   #   point to the new kernel source directory
 3. make menuconfig                # or make xconfig
 4. make modules                   # Build the kernel modules
 5. make modules_install           # Install the previously built modules for the
                                   #   new kernel
 6. make bzImage                   # Create the boot image

この時点では、を実行しないmake installでください。ほとんどのガイドはこれを行うように言っていますが、これは間違っています!代わりに、新しく作成したbzImageファイルを/ boot(つまり、:find -name bzImage /usr/src/linux、次に)cpにコピーし/boot、LILO構成ファイルを編集して(編集/etc/lilo.confし、完了したら、実行lilo)、システムを再起動して(つまり、:init 6またはshutdown -r now)、新しいファイルを試してください。カーネル。

この手順をスキップすることの全体的なポイントはmake install、既存のカーネルを上書き/置換するためです。上記の手順により、新しいカーネルと既存のカーネルの両方を並行してインストールして実行できるようになります。新しいカーネルが壊れているか、重要なオプションを省略した場合でも、ブート/リカバリCD / DVDを必要とせずに、既存の安定した/動作しているカーネルにフォールバックできます。

于 2012-05-23T04:27:28.780 に答える
1

よく思い出せば、ncursesライブラリが欠落していると思います。これらは、menuconfigを使用してインターフェースを作成するために必要です。

Xセッションからmakexconfigを実行して、それが機能するかどうかを確認してください。

その場合、ncursesライブラリは間違いなく欠落しています。

確認する:

ls /var/log/packages/ncurses* 

インストールされているかどうかを確認する

于 2013-12-07T11:17:19.277 に答える