有一点切记,使用tab而不是空格,有可能在vi下面编辑的时候,vi将tab给办的成空格了,才会出现:
*** missing separator. Stop.
在vi中设置不将tab转换成空格
"set expandtab //将tab转换成空格
set noexpandtab //保留tab形式
CXX = g++
CC = gccLD = ld
CFLAGS = -g -Wall
LDFLAGS = -shared -fpic
SRCS = test.cpp test1.cpp
TGT = $(SRCS:.cpp=.o)
all : libtest.a libtest.so
libtest.a:$(TGT)
ar cru libtest.a $(TGT)
ranlib libtest.a
libtest.so:$(TGT)
$(LD) $(TGT) $(LDFLAGS) -o $@
%.o:%.cpp
$(CXX) $? -c $(CFLAGS)
clean:
rm -f *so *.o *a
将库存放在特定的目录下
~/scylla/solib
BASEDIR = $(HOME)/scylla
INC = $(BASEDIR)/include
SOLIB = $(BASEDIR)/solib
SLIB = $(BASEDIR)/slib
CXX = g++
CC = gcc
LD = ld
CFLAGS = -g -Wall
LDFLAGS = -shared -fpic
SRCS = test.cpp test1.cpp
TGT = $(SRCS:.cpp=.o)
slib_1 = $(SLIB)/libtest.a
solib_1 = $(SOLIB)/libtest.so
all:$(slib_1) $(solib_1)
$(slib_1):$(TGT)
ar cru $(slib_1) $(TGT)
ranlib $(slib_1)
# mv libtest.a ~/scylla/slib/
$(solib_1):$(TGT)
$(LD) $(TGT) $(LDFLAGS) -o $@
# mv libtest.so ~/scylla/solib/
%.o:%.cpp
$(CXX) $? -c $(CFLAGS)
main:main.o $(SOLIB)/libtest.so
$(CXX) main.o $(SOLIB)/libtest.so -rdynamic -s -o main
main_s:main.o libtest.a
$(CXX) main.o libtest.a -rdynamic -s -o main_s
clean:
rm -f *so *.o *a
在 /etc/ld.so.conf中添加一行
~/scylla/sobli/
执行命令ldconfig (root 权限)
使用ldconfig -p | grep "新添加的so"来查看是否有收的so添加进去
也可以使用export LD_LOADLIB_PATH=~/scylla/solib/