0

64ビットのUbuntu-12.04でLinSched3.3をコンパイルすると、次のエラーが発生します。

******/home/xxxxx/Desktop/linsched_3.3/tools/linsched/tests/linsched_rand_test.c:169: undefined reference to `sqrt'
collect2: ld returned 1 exit status
make[1]: [linsched_rand_test] Error 1
make[1]: Leaving directory `/home/jianguo/Desktop/linsched_3.3/tools/linsched/tests'
make: [all] Error 2*

math.hを参照/リンクするときに問題があるようです。これは次のとおりです。math:/usr/include/math.h

LinSched 3.3のmakeファイルから、CFLAGSとLFLAGSは次のように定義されます。

    CC = ${CROSS_COMPILE}gcc

    CFLAGS = -g -O2 -m64 -D__KERNEL__ -D__LINSCHED__ -Wall -Wundef -Wstrict-prototypes \
         -Werror-implicit-function-declaration -fno-common \
         -I${LINSCHED_DIR}/include  -I${LINUXDIR}/include \
         -I${LINUXDIR}/arch/linsched/include -I${LINSCHED_DIR}/ \
             -include ${LINSCHED_DIR}/include/generated/autoconf.h \
         -Wno-pointer-sign -include ${LINUXDIR}/include/linux/kconfig.h

    CFLAGS_LINUX = $(CFLAGS) -nostdinc -isystem $(shell $(CC) -print-file-name=include) \
               -include ${LINSCHED_DIR}/linux_linsched.h \
               -Wno-unused  -Wno-strict-aliasing

    LFLAGS = -lm
....
...
...
 LD_PERCPU = ${LD} -r -T ${LINSCHED_DIR}/linsched.lds

OBJ_FILES = ${LINSCHED_OBJS} ${LINUX_OBJS}
DEPS := ${OBJ_FILES:.o=.d}
-include ${DEPS}

TIME_HDR=${LINUXDIR}/kernel/timeconst.h
${TIME_HDR}: ${LINUXDIR}/kernel/timeconst.pl
    @echo "(Generating timeconst.h)"
    @perl ${LINUXDIR}/kernel/timeconst.pl 1000 > $@

${LINUX_OBJS}: %.o: %.c ${TIME_HDR}
    @echo "CC KERNEL $<"
    @${CC} -o $@ ${CFLAGS_LINUX} -c $< -MMD

%.o: %.c
    @echo "CC SIM $<"
    @${CC} ${CFLAGS} -o $@ -c $< -MMD

Web上の誰かがCFLAGSに追加することを提案し-lm、CFLAGSのいくつかの場所にパラメーターを挿入しようとし-lmましたが、同じエラーが続きます。何か案が ???

ところで、CFLAGSでは-m64として構成されているため、LinSched3.3を64ビットubuntuでコンパイルしました。そして、32ビットUbuntuでの以前のコンパイルでは、データの非互換性のエラーがスローされます(elf64-x86-64とelf32-i386の間)

@ another.anon.cowardが提案したように、後でLFLAGがどのように使用されているかを確認したところ、非常に使用されていることがわかりました。解決策として、メイクファイルを変更してLFLAGSパラメーターを追加するにはどうすればよいですか?

4

1 に答える 1

0

実際の問題は、リンカ フラグ ${LFLAGS} が /tools/linsched/tests/Makefile で誤って使用されたことでした。

以下は、linsched の数学ライブラリ リンク関連のビルドの問題を修正するパッチです。

 diff --git a/tools/linsched/tests/Makefile b/tools/linsched/tests/Makefile
index 91bb8eb..8074c93 100644
--- a/tools/linsched/tests/Makefile
+++ b/tools/linsched/tests/Makefile
@@ -33,7 +33,7 @@ TEST_DEPS := ${TESTS:%=%.d}
${TESTS}: ${OBJ_FILES} $$@.o
        @echo CC TEST $@
        @${LD_PERCPU} -o $@.percpu $^
-       @${CC} ${LFLAGS} -o $@ $@.percpu -MMD
+       @${CC} -o $@ $@.percpu ${LFLAGS} -MMD
        @rm $@.percpu

clean:
于 2015-12-30T01:05:37.250 に答える