【问题标题】:Getting a GCC Linker Error: Linker input file unused because linking is not done获取 GCC 链接器错误:链接器输入文件未使用,因为链接未完成
【发布时间】:2012-02-05 17:07:08
【问题描述】:

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

提前致谢。

【问题讨论】:

    标签: c linux gcc linker linker-errors


    【解决方案1】:

    尝试使用带有-lrt -lm 的LDFLAGS 变量并将$(LDFLAGS) 放在$(OBJS) 之后。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-24
        相关资源
        最近更新 更多