Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在64位Ubuntu12.04下编译LinSched 3.3时,math.h引用失败_Linux_Compiler Errors_64 Bit_Ubuntu 12.04 - Fatal编程技术网

Linux 在64位Ubuntu12.04下编译LinSched 3.3时,math.h引用失败

Linux 在64位Ubuntu12.04下编译LinSched 3.3时,math.h引用失败,linux,compiler-errors,64-bit,ubuntu-12.04,Linux,Compiler Errors,64 Bit,Ubuntu 12.04,在64位Ubuntu-12.04下编译LinSched 3.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 dir

在64位Ubuntu-12.04下编译LinSched 3.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时,似乎存在一个问题,即: 数学:
/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
CC=${CROSS\u COMPILE}gcc
CFLAGS=-g-O2-m64-D____________________________-Wall-Wundef-Wstrict原型\
-Werror隐式函数声明-fno公共\
-I${LINSCHED_DIR}/include-I${LINUXDIR}/include\
-I${LINUXDIR}/arch/linsched/include-I${linsched_DIR}/\
-include${LINSCHED_DIR}/include/generated/autoconf.h\
-Wno指针符号-include${LINUXDIR}/include/linux/kconfig.h
CFLAGS_LINUX=$(CFLAGS)-nostdinc-isystem$(shell$(CC)-print file name=include)\
-包括${LINSCHED_DIR}/linux_LINSCHED.h\
-Wno未使用-Wno严格别名
LFLAGS=-lm
....
...
...
LD_PERCPU=${LD}-r-T${LINSCHED_DIR}/LINSCHED.lds
OBJ_文件=${LINSCHED_OBJS}${LINUX_OBJS}
DEPS:=${OBJ_文件:.o=.d}
-包括${DEPS}
TIME_HDR=${LINUXDIR}/kernel/timeconst.h
${TIME\u HDR}:${LINUXDIR}/kernel/timeconst.pl
@echo“(生成时间常数h)”
@perl${LINUXDIR}/kernel/timeconst.pl 1000>$@
${LINUX\u OBJS}:%.o:%.c${TIME\u HDR}

@echo“CC KERNEL$实际上问题在于/tools/linsched/tests/Makefile中使用了链接器标志${LFLAGS}

以下是修复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:

(在这里猜测)您需要将数学库添加到链接器选项中。稍后在生成文件中如何使用
LFLAGS
?在生成文件中是否有
LDFLAGS
?@other.anon.coward我想您明白了。LFLAGS实际上在稍后不使用。…@other.anon.coward我已经列出了生成文件的其余部分,可以看到,LFLAGS是never已使用。要将数学库添加到链接器选项中?a应如何修改生成文件?是的,您需要在链接时添加链接器标志。尽管如此,看起来您已经找到了解决方案。也许您可以发布相同的解决方案并接受它作为解决方案,以便它可以帮助将来可能面临相同问题的其他人。