1. 程式人生 > >AIX系統下的Makefile

AIX系統下的Makefile

               


  因AIX下的Makefile目前還不支援Makefile函式,如果將Linux下的Makefile放入AIX系統下,會出現很多錯誤。因此,很有必要總結一下AIX下Makefile的使用場景。

1) 編譯多個C檔案生成可執行檔案   如:  test.h test.c main.c->main可執行檔案 
CC = ccCFLAGS = -q64INCLUDE = -I. \                        -I$(HOME)/incl \                        -I$(HOME)/src/inclLIB_PATH = -L. \                        -L$(HOME)/lib \                        -L/usr/lib LIB_LIST = -lbase -lxml -lpkg  #(注:這裡的動態連結庫必須在LD_LIBRARY_PATH的指定路徑下,否則會報找不到動態連結庫)OBJS = test.o main.oTARGET = main.PHONY: all cleanall: $(TARGET)$(TARGET): $(OBJS)    $(CC) $(CFLAGS) -o $(TARGET) $(OBJS) $(INCLUDE) $(LIB_PATH) $(LIB_LIST).SUFFIXES: .o .c.c.o:    $(CC) $(CFLAGS) $(INCLUDE) -c $*.cclean:    rm -f $(OBJS)

2) 編譯多個C檔案,生成動態連結庫
  如: test.h test.c abc.c->libabc.so動態連結庫
OBJS = test.o abc.oTARGET = libabc.so.PHONY: all cleanall: $(TARGET)$(TARGET): $(OBJS)    $(CC) $(CFLAGS) -G -o $(TARGET) $(OBJS) $(INCLUDE).SUFFIXES: .o .c.c.o:    $(CC) $(CFLAGS) $(INCLUDE) -c $*.cclean:    rm -f $(OBJS) 

3) 編譯多個EC和C檔案,生成可執行檔案
  如: 編譯   test.h test.ec main.c->main可執行檔案
OBJS = test.o main.oTARGET = mainall: $(TARGET)$(TARGET): $(OBJS)    $(ESQL) $(CFLAGS) -o $(TARGET) $(OBJS) $(INCLUDE) $(LIB_PATH) $(LIB_LIST).SUFFIXES: .ec .c .o.ec.o:    rm -f $*.c    $(ESQL) $(CFLAGS) $(INCLUDE) -c $*.ec    rm -f $*.c.c.o:    $(CC) $(CFLAGS) $(INCLUDE) -c $*.c

4) 編譯多個EC和C檔案,生成動態連結庫
  如: test.h test.ec abc.c->libabc.so動態連結庫
CC = ccESQL = $(INFORMIXDIR)/bin/esqlCFLAGS = -q64INCLUDE = -I. \                        -I$(INFORMIXDIR)/incl/esql \                        -I$(INFORMIXDIR)/incl/public LIB_PATH = -L$(INFORMIXDIR)/lib \                        -L$(INFORMIXDIR)/lib/esqlLIB_LIST = -lbase -ltest -lhaha #(注:這裡的動態連結庫必須在LD_LIBRARY_PATH的指定路徑下,否則會報找不到動態連結庫)OBJS = test.o abc.oTARGET = libabc.so.PHONY: all cleanall: $(TARGET)$(TARGET): $(OBJS)    $(ESQL) $(CFLAGS) -G -o $(TARGET) $(OBJS) $(LIB_PATH) $(LIB_LIST) $(INCLUDE).SUFFIXES: .ec .c .o.ec.o:    rm -f $*.c    $(ESQL) $(CFLAGS) $(INCLUDE) -c $*.ec    rm -f $*.c.c.o:    $(CC) $(CFLAGS) $(INCLUDE) -c $*.cclean:    rm -fr $(OBJS) $(TARGET)
             

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://blog.csdn.net/jiangjunshow