我正嘗試使用單個makefile構建兩個源代碼。我想先構建Linux-PAM-1.2.0,然後是pam_radius-1.4.0。 pam_radius-1.4.0是最外層的目錄,Linux-PAM-1.2.0是內層目錄。Makefile使用單個make文件構建兩個源代碼
| pam_radius-1.4.0 -- Linux-PAM-1.2.0
每個人都有自己的make文件。我需要先編譯Linux-PAM-1.2.0,然後我需要編譯pam_radius-1.4.0,因爲我需要爲編譯pam_radius-1.4.0提供Linux-PAM-1.2.0的路徑。
我在pam_radius-1.4.0 makefile中做了一些修改。我需要首先編譯Linux-PAM-1.2.0,然後我需要編譯pam_radius-1.4.0,因爲我需要爲編譯pam_radius-1.4.0 makefile提供Linux-PAM-1.2.0的路徑。我的make文件失敗。在做之前,我需要創建一個安裝目錄。已經對pam_radius-1.4.0 Makefile進行了如下更改。我在Makefile中啓用了mkdir mkdir $(SUBDIR)/install/
,並使得我得到一個錯誤。如果我禁用mkdir,我會收到一條消息make: Linux-PAM-1.2.0' is up to date.
。我已經做了make clean:`Linux-PAM-1.2.0'是最新的。
我的化妝文件如下
SUBDIR = Linux-PAM-1.2.0
CC = arc-linux-uclibc-gcc
INSTALL_PATH = $(shell pwd)
LINUX_PAM_PATH = $(shell pwd)/$(SUBDIR)/
mkdir $(SUBDIR)/install/
$(SUBDIR):
$(MAKE) -C $(LINUX_PAM_PATH)
$(MAKE) -C install
CFLAGS = -Wall -fPIC -I $(INSTALL_PATH)/$(LINUX_PAM)/install/include/
LDFLAGS = -L $(INSTALL_PATH)/$(LINUX_PAM)/install/lib/
all:pam_radius_auth.so
pam_radius_auth.o: src/pam_radius_auth.c src/pam_radius_auth.h
$(CC) $(CFLAGS) -c $< -o [email protected]
md5.o: src/md5.c src/md5.h
$(CC) $(CFLAGS) -c $< -o [email protected]
pam_radius_auth.so: pam_radius_auth.o md5.o
pam_radius_auth.so: pam_radius_auth.o md5.o
$(CC) $(CFLAGS) $(LDFLAGS) -shared pam_radius_auth.o md5.o -lpam -o pam_radius_auth.so
可以請你讓我知道我在做什麼錯在這裏。如果我取消註釋mkdir,我得到一個錯誤,如果我發表評論,那麼它會說:`Linux-PAM-1.2.0'是最新的。
嘗試移動 '的mkdir $(SUBDIR)/安裝/' 線後 '$(SUBDIR):' –
累出來還是同樣的問題 – Manu
你不不會構建源代碼(以某種方式生成的C或C++代碼不是源代碼!)。您可以從源代碼構建程序。 –