获取GCC链接器错误:链接器输入文件未使用,因为链接未完成

时间:2012-02-05 17:07:08

标签: c linux gcc linker linker-errors

在编写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。我不知道哪些差异会导致此错误,因为这些是标准库。任何帮助表示赞赏。

提前致谢。

2 个答案:

答案 0 :(得分:1)

尝试将LDFLAGS变量与-lrt -lm一起使用,并将$(LDFLAGS)放在$(OBJS)之后。

答案 1 :(得分:0)

尝试将$(CFLAGS)放在行尾。有时它会有所帮助。