Makefile增加include path與指定Lib

openssl的.h安裝在/usr/local/ssl/include/openssl下

Lib的 libcrypto.a在/usr/local/ssl/lib下

不知道 Makefile該怎麼去增加這2個的PATH去找!!

g.o這個物件檔需要用到openssl這2個東西!!

謝謝大大們的解答

Makefile如下:

CROSS = arm-linux-

CC = $(CROSS)gcc

CXX = $(CROSS)g

OBJDUMP = $(CROSS)objdump

INCLUDE = ../include

INCLUDESYS =/usr/local/arm/hybus-arm-linux-R1.1/arm-linux/include

CFLAGS = -g -O2 -DCONFIG_ISCSI_DEBUG

CFLAGS = -Wall -Wstrict-prototypes -fno-strict-aliasing -fno-common -Wno-trigraphs -I$(INCLUDE) -D_GNU_SOURCE

CFLAGS = -static

OBJS = a.o b.o c.o d.o e.o f.o

abcd: g.o $(OBJS)

$(CC) $(CFLAGS) g.o $(OBJS) -lpthread -o abcd

d.o: d.c $(INCLUDE)/d.h

e.o: e.c $(INCLUDE)/e.h $(INCLUDE)/d.h md5.c

osd.o: osd.c $(INCLUDE)/osd.h $(INCLUDE)/device.h $(INCLUDE)/d.h $(INCLUDE)/c.h

c.o: c.c $(INCLUDE)/c.h $(INCLUDE)/d.h

a.o:a.c $(INCLUDE)/c.h $(INCLUDE)/d.h $(INCLUDE)/b.h $(INCLUDE)/device.h

b.o: target.c $(INCLUDE)/c.h $(INCLUDE)/d.h $(INCLUDE)/b.h $(INCLUDE)/e.h

f.o: f.c $(INCLUDE)/f.h

clean:

rm -f *.o abcd

3 個解答

評分
  • Lv 7
    1 0 年前
    最佳解答

    從你的Makefile裡看出你是用gcc編譯器.在用gcc時若你有自定的*.h和*.a要加入時你要用-I和-L.

    比如說

    gcc –I /usr/local/ssl/include/openssl –L /usr/local/ssl/lib –o test test.c

    若要在你的Makefile裡解決這問題有好幾種解決方法.

    1. 把-I和-L加入$(CC)這行.

    2. 把-I和-L加入CFLAGS裡.

    3. 自定一個INCLUDE和LIB變數.把INCLUDE和LIB設定為自定的PATH之後.把-I和-L加入$(CC)裡.

    P.S. 你的Makefile有一些奇怪的地方.例如說為何有這三行?

    CFLAGS = -g -O2 -DCONFIG_ISCSI_DEBUG

    CFLAGS = -Wall -Wstrict-prototypes -fno-strict-aliasing -fno-common -Wno-trigraphs -I$(INCLUDE) -D_GNU_SOURCE

    CFLAGS = -static

    這樣CFLAGS最後只有-static.前面兩行不就是多餘的了?

    懂不懂?不懂請再問

    參考資料: Myself
  • 用專案加就好啦

    在目錄中要加入的資料夾(專案的虛擬資料夾)上按右鍵

    選〝將檔案加入專案〞

    選擇要加入的檔案

    按〝開啟〞

    完成

    (專案系統會自動在Makefile中新增檔案)

  • Chiu
    Lv 4
    1 0 年前

    gcc 的 -I , 告訴 compiler 哪裡找 header file

    -Ldir, 去找 library 來連結.

    試試看

    -I/usr/local/ssl/include/openssl -lcrypto-L/usr/local/ssl/lib

還有問題?馬上發問,尋求解答。