0

簡単な質問..Gprofでプロファイリングするドライバーをコンパイルする方法は?

私の現在のMakefile:

obj-m += hello-2.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

正常に動作しますが(ドライバーなどをロードできます)、ファイルに-pgオプションを追加しようとすると、エラーが発生します。

Makefile:

obj-m += hello-2.o

EXTRA_CFLAGS += -pg
LDFLAGS += -pg

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 -C /lib/modules/2.6.31/build M=/home/I/drivertest modules
make[1]: Entering directory `/home/I/linux-2.6.31'
  CC [M]  /home/I/drivertest/hello-2.o
  Building modules, stage 2.
  MODPOST 1 modules
WARNING: "mcount" [/home/I/drivertest/hello-2.ko] undefined!
  CC      /home/I/drivertest/hello-2.mod.o
  LD [M]  /home/I/drivertest/hello-2.ko
ld: unrecognized option '-pg'
ld: use the --help option for usage information
make[2]: *** [/home/I/drivertest/hello-2.ko] Error 1
make[1]: *** [modules] Error 2
make[1]: Leaving directory `/home/I/linux-2.6.31'
make: *** [all] Error 2
4

3 に答える 3

0

gprofを使用してカーネルモジュールをプロファイリングすることはできません。プロファイリングサポートを有効にしてカーネルをコンパイルし、readprofileツールを使用する必要があります。詳細については、Linuxカーネルのドキュメントを参照してください。

于 2010-09-10T13:23:26.913 に答える
0

カーネルモジュールでgprofを使用できる場合でも、ボトルネックを見つけるのに役立つと宣伝されることはありませんでした。詳細については。

于 2010-09-13T13:39:44.170 に答える
-1

-pgはコンパイルフラグであり、リンケージフラグではありません。から削除しますLDFLAGS(そして明らかにそのままにしておきますEXTRA_CFLAGS)。

于 2010-09-10T13:22:04.610 に答える