私は持っている:
main.c
関数呼び出しを持つ main 関数を含むAC プログラム。test.c
関数定義を含む別の C プログラム。- ヘッダー
test.h
には共通の宣言があります。
私の目的を注意深くお読みください。私の目的 は、カーネル オブジェクトとそれを使用するアプリケーションを用意することです。実行時に関数にいくつかの入力を与え、それを処理する必要があります。
ターミナルで使用しています。誰でも私を助けてもらえますか?
私は持っている:
main.c
関数呼び出しを持つ main 関数を含むAC プログラム。test.c
関数定義を含む別の C プログラム。test.h
には共通の宣言があります。私の目的を注意深くお読みください。私の目的 は、カーネル オブジェクトとそれを使用するアプリケーションを用意することです。実行時に関数にいくつかの入力を与え、それを処理する必要があります。
ターミナルで使用しています。誰でも私を助けてもらえますか?
カーネル モジュールをコンパイルするには、次の基本的な 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>