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.hapi関数へのすべての呼び出しに対して「未定義の参照」を取得しています。

4

1 に答える 1

5

rtまたはpthreadライブラリとリンクする必要があります。man sem_destroyリファレンスページから:

-lrtまたは-pthreadでリンクします。

順序が重要であるため、コンパイラコマンドの最後に追加します(-pthreadこれによりいくつかのマクロが定義され、追加されるため、順序が重要かどうかは不明です-lpthread)。

Vlad Lazarenkoがコメントしたように、はあなたの一部でLDFLAGSはありませんTARGET。への変更:

$(CC)$(OBJECTS)-o $ @ $(LDFLAGS)

于 2013-03-12T17:10:36.180 に答える