Компилирането на LinSched 3.3 под 64-битов Ubuntu-12.04 ми извежда следните грешки:
******/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
От make файла на LinSched 3.3, 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
Някой в мрежата предложи да се добави -lm
в CFLAGS, опитах се да вмъкна параметъра -lm
на няколко места в CFLAGS, но същите грешки продължават. Някаква идея ???
Между другото, компилирах LinSched 3.3 под 64-битов ubuntu, защото в CFLAGS е конфигуриран като -m64. И предишна компилация под 32-битов Ubuntu ми извежда грешка за несъвместимост на данните (между elf64-x86-64 и elf32-i386)
Както беше предложено от @another.anon.coward, проверих как се използва LFLAG по-късно и открих, че се използва многократно. Като решение, как трябва да променя makefile, за да добавя параметъра LFLAGS???
LFLAGS
в make-файла по-късно? Има лиLDFLAGS
в make-файла? - person another.anon.coward   schedule 06.02.2013