Вот мой Makefile:Как решить эту проблему связи в Makefile?
DIR=..
ARG=$(QUERY_STRING)
MAIN=main
SRC_DIR=$(DIR)/src
BIN_DIR=$(DIR)/bin
INC_DIR=$(DIR)/inc
LIB_DIR=$(DIR)/lib
LIBS=markdown
all: $(MAIN) exec
$(MAIN): $(MAIN).o
$(LD) $^ -L $(LIB_DIR) -l $(LIBS) -o $(BIN_DIR)/[email protected]
$(MAIN).o: $(SRC_DIR)/$(MAIN).c
$(CC) $^ -I $(INC_DIR) -o [email protected]
exec:
$(BIN_DIR)/$(MAIN) $(ARG)
clean:
rm -f *.o core.* $(BIN)/$(MAIN)
Это четко определено, как организован мой проект, поэтому я не буду объяснять. Он компилируется без каких-либо проблем, но на бинарном исполнении $(BIN_DIR)/$(MAIN)
появляется следующее сообщение об ошибке:
../bin/main: error while loading shared libraries: rintf: cannot open shared object file: No such file or directory
make: *** [exec] Error 127
Что библиотека делает rintf
принадлежат? Я тоже пытался связать -lc
, но это не решает проблему.
Что-то не так с моим Makefile
? Или мне нужно связать что-то дополнительное с $(MAIN)
?
Заранее благодарим за ваши ответы.
+1. Кроме того, правило `all: $ (MAIN) exec` неразумно; Make не обещает построить предпосылки цели в порядке слева направо. Лучше: `all: exec` и` exec: $ (MAIN) `. – Beta 2010-11-25 16:58:57