我想创建一个支持 posix 信号量的 makefile。
这就是我到目前为止所得到的:
CFLAGS=-g -ansi -pedantic -Wall -Werror -D_XOPEN_SOURCE=600
LDFLAGS=-pthread
CC=gcc
OBJECTS=MsgQueueMain.o MsgQueue.o Queue.o MyMalloc.o
TARGET=MsgQueueMain
all: $(TARGET)
$(TARGET): $(OBJECTS)
$(CC) $(OBJECTS) -o $@
include depends
depends:
$(CC) -MM $(OBJECTS:.o=.c) > depends
clean:
rm ./$(TARGET) *.o
出于某种原因,对于 semaphore.h api 函数的所有调用,我都收到了“ undefined reference ”。
最佳答案
您需要链接 rt
或 pthread
库。从 man sem_destroy 引用页面:
添加到编译器命令的末尾作为 order is important (不确定顺序对 -pthread
是否重要,因为它定义了一些宏并添加了 -lpthread
)。
正如 Vlad Lazarenko 所评论的, LDFLAGS
不是您的 TARGET
的一部分。改成:
关于使用 pthread 创建 makefile,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15367617/