1、所有文件在一个文件目录下时
头文件 A.h B.h C.h
源文件A.cpp B.cpp C.cpp
命令:g++ -fPIC -c A.cpp B.cpp C.cpp 生成各自的.o文件
g++ -shared -fPIC A.o B.o C.o -o libtest.so
2、文件不在一个文件目录下时
在最后用-I把文件目录包含
g++ -fPIC -c DceTradeChannel.cpp DceTradeLog.cpp Helper.cpp TradeChannelFactory.cpp -I../include
g++ -shared -fPIC DceTradeChannel.o DceTradeLog.o Helper.o TradeChannelFactory.o -o libDceTradeChannel.so
这是运用Makrfile文件的例子
PROGRAM_NAME=tagmat
PROGRAM_HOME=..
LPATH=${PROGRAM_HOME}/${PROGRAM_HOME}/local/lib
LOCALPATH=${FDK}
INCLUDE_TAG=-I${PROGRAM_HOME}/src -I$(LPATH)/../include
CXX=g++
CFLAGS=-O3
SRC=$(wildcard *.cpp)
OBJ=$(patsubst %.cpp,%.o,$(SRC))
#
# Make rules starts here, you should need to edit anything below this line
#
all : ${PROGRAM_NAME}
@(if [ ! -d ${LPATH} ]; then mkdir ${LPATH}; fi)
@(mv ${PROGRAM_NAME} ${LPATH}/${PROGRAM_NAME})
${OBJ} : ${SRC} ${HEADER}
$(CXX) $(CFLAGS) -c ${SRC} ${INCLUDE_TAG}
${PROGRAM_NAME} : ${OBJ}
$(CXX) $(CFLAGS) -o ${PROGRAM_NAME} ${OBJ} -L${LPATH}/ -lmatio -lz
clean:
rm -rf *.o ${LPATH}/${PROGRAM_NAME}