【发布时间】:2013-11-16 19:46:24
【问题描述】:
我使用的是 Ubuntu 12.04。 当我尝试通过键入 make 进行编译时,出现以下错误:
undefined reference to `clock_gettime'
collect2: ld returned 1 exit status
我的 makefile 如下所示:
OBJS = main.o bst.o rbt.o
OBJS_BST_TEST = bst_test.o bst.o
OBJS_RBT_TEST = rbt_test.o bst.o rbt.o
CC = g++
DEBUG = -g
CFLAGS = -std=c++0x -Wall -c $(DEBUG)
LFLAGS = -Wall $(DEBUG)
BSTvRBT: $(OBJS)
$(CC) $(LFLAGS) $(OBJS) -o BSTvRBT
BST_TEST: $(OBJS_BST_TEST)
$(CC) $(LFLAGS) $(OBJS_BST_TEST) -o BST_TEST
RBT_TEST: $(OBJS_BST_TEST)
$(CC) $(LFLAGS) $(OBJS_BST_TEST) -o RBT_TEST
bst_test.o: bst.h
$(CC) $(CFLAGS) bst_test.cpp
rbt_test.o: bst.h rbt.h
$(CC) $(CFLAGS) rbt_test.cpp
main.o: bst.h rbt.h
$(CC) $(CFLAGS) main.cpp -lrt
bst.o: bst.h bst.cpp exceptions.h
$(CC) $(CFLAGS) bst.cpp
rbt.o: rbt.h rbt.cpp bst.h exceptions.h
$(CC) $(CFLAGS) rbt.cpp
clean:
\rm *.o *~ BSTvRBT BST_TEST RBT_TEST
tar:
tar cfv BSTvRBT.tar main.cpp bst.h bst.cpp rbt.h rbt.cpp exceptions.h bst_test.cpp rbt_test.cpp README.md makefile
all: BSTvRBT BST_TEST RBT_TEST
参考以 main.o 开头的行 在 main.cpp 中,我有
#include <time.h>
和
int ret;
timespec start;
ret = clock_gettime(CLOCK_REALTIME, &start);
根据我的阅读,我必须在编译时链接 -lrt。 如何修改我的 makefile 来做到这一点?
【问题讨论】: