5

x86 ubuntu Linux で ARM カーネル モジュールをクロス コンパイルしたいと考えています。カーネル ソース (ターゲット ARM マシンがこの Linux バージョンを実行しているため、Linux 2.6.26) をダウンロードしました。そして、アームクロスコンパイラを適切に取得しました。ご覧のように。

root@declspec-desktop:/var/www/module_test# arm-linux-gnueabi-
arm-linux-gnueabi-addr2line  arm-linux-gnueabi-cpp-4.5
arm-linux-gnueabi-gcov-4.5   arm-linux-gnueabi-ld.gold
arm-linux-gnueabi-ranlib     arm-linux-gnueabi-strip
arm-linux-gnueabi-ar         arm-linux-gnueabi-elfedit
arm-linux-gnueabi-gprof      arm-linux-gnueabi-nm
arm-linux-gnueabi-readelf    arm-linux-gnueabi-as
arm-linux-gnueabi-gcc        arm-linux-gnueabi-ld
arm-linux-gnueabi-objcopy    arm-linux-gnueabi-size       
arm-linux-gnueabi-c++filt    arm-linux-gnueabi-gcc-4.5
arm-linux-gnueabi-ld.bfd     arm-linux-gnueabi-objdump
arm-linux-gnueabi-strings  

以下は私のカーネル モジュール (hello_module.ko) コンパイル (x86 マシン用) の Makefile で、これは正常に動作します。

obj-m += hello_module.o
KDIR := /lib/modules/$(shell uname -r)/build
#PWD:=$(shell pwd)

all:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

clean:
        rm -rf *.o *.ko *.mod.* .c* .t*

Linux 2.6.26 用のカーネル モジュールを ARM 用にクロス コンパイルするには、元の作業 Makefile で何を変更する必要がありますか?

LinuxソースとLinuxヘッダーソースの違いは何ですか? カーネル関連のものをコンパイルするたびにこれらを見てきましたが、それでもわかりません。

いくつかの記事をグーグル検索しましたが、役に立ちません...

4

1 に答える 1

3

hello_module に移動する前に、カーネル ソースをビルドすることをお勧めします。これで、arm クロス コンパイラのインストールが正常に完了したことが確認されます。

多くの場合、ツールチェーンの問題は以下の必要性にまでさかのぼります。

export CROSS_COMPILE=arm-linux-gnueabi- 

export ARCH=arm

また、クロスツールチェーンのインストール時に PATH を更新する必要があるため、実行中の make からツールを見つけることができます。CodeSourcery のインストールでそれを行うことができますが、PATH の更新はログアウト/ログイン後にのみ有効になります。

上記のコンソール出力をどのように取得したかは明確ではありません。問題が解決しない場合は、次のようなことを行い、結果をコメントとして投稿することをお勧めします。

printenv | grep PATH

whereis arm-linux-gnueabi-gcc

which arm-linux-gnueabi-gcc
于 2013-01-09T13:52:53.303 に答える