在编写makefile时我是初学者,但我的程序存在这个链接问题。基本上,当我尝试在远程计算机上构建它时,我收到上述错误。 这是我的makefile:
SRCS = gt_cfs.c gt_kthread.c gt_matrix.c gt_pq.c gt_signal.c gt_spinlock.c \
gt_uthread.c red_black_tree.c stack.c misc.c
HDRS = gt_bitops.h gt_cfs.h gt_include.h gt_kthread.h gt_pq.h gt_signal.h \
gt_tailq.h gt_uthread.h red_black_tree.h stack.h misc.h
OBJS = gt_cfs.o gt_kthread.o gt_matrix.o gt_pq.o gt_signal.o gt_spinlock.o \
gt_uthread.o red_black_tree.o stack.o misc.o
CC = gcc
CFLAGS = -Wall -pedantic -lrt -lm
PROGRAM = cfs_gtthreads
.PHONY: clean
all: $(PROGRAM)
$(PROGRAM): $(OBJS)
$(CC) $(CFLAGS) $(OBJS) -o $(PROGRAM)
gt_include.h: gt_bitops.h gt_cfs.h gt_kthread.h gt_pq.h \
gt_signal.h gt_tailq.h gt_uthread.h
gt_cfs.o: gt_cfs.c
gt_kthread.o: gt_kthread.c
gt_matrix.o: gt_matrix.c
gt_pq.o: gt_pq.c
gt_signal.o: gt_signal.c
gt_spinlock.o: gt_spinlock.c
gt_uthread.o: gt_uthread.c
red_black_tree.o: red_black_tree.c
stack.o: stack.c
clean:
rm -f *.o *~ $(PROGRAM)
现在这段代码在我的笔记本电脑上运行,但我必须通过SSH在远程机器上运行我的程序。无论如何在那台机器上我得到这个错误,所以我很困惑为什么它不能链接两个库:数学和时间(-lm和-lrt)。 gcc版本不同,我的是4.5.2,集群机器是4.1.2。我也在Ubuntu上运行我的,并且集群机器是Red-Hat。我不知道哪些差异会导致此错误,因为这些是标准库。任何帮助表示赞赏。
提前致谢。
答案 0 :(得分:1)
尝试将LDFLAGS
变量与-lrt -lm
一起使用,并将$(LDFLAGS)
放在$(OBJS)
之后。
答案 1 :(得分:0)
尝试将$(CFLAGS)
放在行尾。有时它会有所帮助。