2

自分の静的ライブラリをメイン プログラムにリンクしようとしています。私のインクルード ヘッダーとライブラリは同じパスにあります。g++ はメイン ヘッダーを正常にリンクできますが、ライブラリ (ipc.a) を見つけることができません。私が間違っていることを教えてください。

make を実行したときに表示されるエラーは次のとおりです。

# make
g++ -o esim esim.o -L /home/vint/HobbyProjects/esim/src/LIB/PLAT -lipc -Wall -g  
/usr/bin/ld: cannot find -lipc
collect2: ld returned 1 exit status

Makefile を以下に示します

INC_DIR = /home/vint/HobbyProjects/esim/src/LIB/PLAT
LIB_DIR = /home/vint/HobbyProjects/esim/src/LIB/PLAT
INCLUDES = -I $(INC_DIR)/

LIBS = -L$(LIB_DIR)/
LIBA = -lipc

CC = g++
DEBUG = -g
LFLAGS = -Wall $(DEBUG)
CFLAGS = -Wall -c

SOURCES = esim.cpp \

HEADERS = esim.h

OBJ = $(SOURCES:.cpp=.o)

EXE = esim

all: esim

$(EXE): $(OBJ)
    $(CC) $(OBJ) $(INCLUDES) $(LIBA) -o $(EXE) 

.cpp.o:
    $(CC) $(CFLAGS) $(INCLUDES) $< -o $@

tar:
    tar -czf $(EXE).tar.gz $(SOURCES) $(HEADERS) Makefile

clean:
    rm -f $(OBJ)
    rm -f $(EXE)
4

1 に答える 1

1

-L/home/vint/HobbyProjects/esim/src/LIB/PLAT問題は、makefile でコンパイルするときにオプションを追加しないことです。

変化する:

$(EXE): $(OBJ)
    $(CC) $(OBJ) $(INCLUDES) $(LIBA) -o $(EXE)

の中へ:

$(EXE): $(OBJ)
    $(CC) $(OBJ) $(INCLUDES) $(LIBA) $(LIBS) -o $(EXE) 
于 2013-10-20T14:18:16.770 に答える