他の Ubuntu ユーザーが Intel パワー ガジェットを実行しようとして、私が抱えている問題が何なのか分かってくれることを願っています。
パワー ガジェットをインストールしようとして、make ファイルを実行すると、エラー メッセージが表示されます:
/usr/lib/power_gadget/rapl.c:516: undefined reference to `log'
この行は、.c ファイル内の行を参照します。
return (log((double)(time / RAPL_TIME_UNIT)) - A_LNF[F]) / LN2;
このログ関数は正しく呼び出されていますか? Ubuntu セットアップの依存関係が不足していますか? ダウンロードしたライブラリ ファイルが不足している可能性がありますか?
ご協力をよろしくお願いします
よろしく
ロズ
編集、makeファイルは以下のとおりです:
CFLAGS=-g
all: rapl_lib_shared rapl_lib_static power_gadget_static
rapl_lib_shared:
gcc $(CFLAGS) -fpic -c msr.c cpuid.c rapl.c
gcc $(CFLAGS) -shared -o librapl.so msr.o cpuid.o rapl.o
rapl_lib_static:
gcc $(CFLAGS) -c msr.c cpuid.c rapl.c
ar rcs librapl.a msr.o cpuid.o rapl.o
power_gadget_static:
gcc $(CFLAGS) power_gadget.c -I. -L. -lm -o power_gadget ./librapl.a
power_gadget:
gcc $(CFLAGS) power_gadget.c -I. -L. -lm -lrapl -o power_gadget
gprof: CFLAGS = -pg
gprof: all
./power_gadget -e 100 -d 60 >/dev/null 2>&1
gprof power_gadget > power_gadget.gprof
rm -f gmon.out
make clean
clean:
rm -f power_gadget librapl.so librapl.a msr.o cpuid.o rapl.o
答え1
-lm
私も同じ問題に遭遇しましたが、 GCC コマンドの末尾のフラグを変更するだけで解決できました。
したがって、Makefile は次のようになります。
CFLAGS=-g
all: rapl_lib_shared rapl_lib_static power_gadget_static
rapl_lib_shared:
gcc $(CFLAGS) -fpic -c msr.c cpuid.c rapl.c
gcc $(CFLAGS) -shared -o librapl.so msr.o cpuid.o rapl.o
rapl_lib_static:
gcc $(CFLAGS) -c msr.c cpuid.c rapl.c
ar rcs librapl.a msr.o cpuid.o rapl.o
power_gadget_static:
gcc $(CFLAGS) power_gadget.c -I. -L. -o power_gadget ./librapl.a -lm
power_gadget:
gcc $(CFLAGS) power_gadget.c -I. -L. -lrapl -o power_gadget -lm
gprof: CFLAGS = -pg
gprof: all
./power_gadget -e 100 -d 60 >/dev/null 2>&1
gprof power_gadget > power_gadget.gprof
rm -f gmon.out
make clean
clean:
rm -f power_gadget librapl.so librapl.a msr.o cpuid.o rapl.o