這裏是我的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