g++ でプログラムをビルドしようとしていますが、「未定義の参照」が発生します。
フォルダ構造:
Makefile
libs/
libcrypotpp.a
libz.a
sources/
here are the sources and headers
out/
objfiles/
Makefile は次のようになります。
#makefile for program
#needs libz.a and libcryptopp.a
CC = g++
SOURCES = sources/*.cpp
LIBS = -lcryptopp -lz -pthread
LIBPATH = libs/
OBJPATH = objfiles/
OUTPUT = out/
OBJS = *.o
HEADERPATHS = -Isources -Isources/cryptopp
all:
echo "Program"
echo "------------------"
ifneq ("$(wildcard libs/libz.a)", "")
echo "ZLIB found!"
ifneq ("$(wildcard libs/libcryptopp.a)", "")
echo "Cryptopp found!" #all librarys found
$(CC) $(HEADERPATHS) -L$(LIBPATH) $(LIBS) $(SOURCES)
mv *.o $(OBJPATH)
else
echo "error: Cryptopp(libs/libcryptopp.a) was not found!"
endif
else ifneq ("$(wildcard libs/libcryptopp.a)", "")
echo "Cryptopp found!"
echo "error: ZLIB(libs/libz.a) was not found!"
else
echo "error: ZLIB(libs/libz.a) was not found!"
echo "error: Cryptopp(libs/libcryptopp.a) was not found!"
endif
.SILENT: all
g++ はコンパイルしますが、未定義の参照を出力します。
なぜ失敗するのですか?