-4

私は持っている:

  1. main.c関数呼び出しを持つ main 関数を含むAC プログラム。
  2. test.c関数定義を含む別の C プログラム。
  3. ヘッダーtest.hには共通の宣言があります。

私の目的を注意深くお読みください。私の目的 は、カーネル オブジェクトとそれを使用するアプリケーションを用意することです。実行時に関数にいくつかの入力を与え、それを処理する必要があります。

ターミナルで使用しています。誰でも私を助けてもらえますか?

4

1 に答える 1

2

カーネル モジュールをコンパイルするには、次の基本的な makefile を記述します。

obj-m += <your_obj_file>.o

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

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

その後、モジュールをビルドしてロードする必要があります

make
insmod <your_module>.ko

しかし、私があなたを読んだとき、あなたが本当にやりたいことはカーネルモジュールではないと思います。共有ライブラリ ( .soファイルまたは.dll )を構築したいと考えていますね。

構築したい Linux 共有ライブラリの場合、呼び出すコマンドは次のとおりです。

gcc -c -fPIC test.c
gcc -shared test.o -o libtest.so

gcc -c main.c
gcc main.o -o <binary name> -ltest

しかし、古典的な方法で静的バイナリを構築したいだけの場合:

gcc -c test.c
gcc -c main.c

gcc test.o main.o -o <binary name>
于 2012-08-23T14:49:01.800 に答える