3

我想创建一个支持 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 函数的所有调用都获得了“未定义的引用”。

4

1 回答 1

5

您需要与rtorpthread库链接。从man sem_destroy参考页:

使用 -lrt 或 -pthread 链接。

添加到编译器命令的末尾,因为顺序很重要(不确定顺序是否很重要,-pthread因为它定义了一些宏并添加了-lpthread)。

正如Vlad Lazarenko所说LDFLAGS不是您的. 改成:TARGET

$(CC) $(对象) -o $@ $(LDFLAGS)

于 2013-03-12T17:10:36.180 回答