代码文件结构:

.
├── dynamiclib_add.c
├── dynamiclib_mul.c
├── dynamiclibs.h
├── libs
└── Makefile

1 directory, 4 files

libs作为一个存放动态库的目录

Makefile:

复制代码
#defualt GCC
#Please use make CC=mipsel64-linux-gcc (Like this)

CC = gcc
CFLAGS = -Wall -g -O -fPIC
CXXFLAGS =
TARGET   = libmytest.so
LIBPATH  = ./libs/

OBJS = *.o
SRCS = *.c

#SRCS = dynamiclib_add.c dynamiclib_mul.c
#OBJS = dynamiclib_add.o dynamiclib_mul.o

all:$(TARGET) $(OBJS)

$(OBJS):$(SRCS)
        $(CC) $(CFLAGS) -c $^

$(TARGET):$(OBJS)
        rm -f $(LIBPATH)*
        $(CC)  $(OBJS) -shared -fPIC -o $(TARGET)
        mv $(TARGET) $(LIBPATH)

clean:
        rm -f *.o
        rm -f $(LIBPATH)*
复制代码

 

编译过程:

gcc -Wall -g -O -fPIC -c dynamiclib_mul.c dynamiclib_add.c
rm -f ./libs/*
gcc  *.o -shared -fPIC -o libmytest.so
mv libmytest.so ./libs/

此处可以选择交叉编译链

 

编译结果:

libs/libmytest.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, 
BuildID[sha1]=c81dc02f6d6282fda3a83265bb3de3802b3926db,
not stripped

此处看到没有stripped,可以stripped,体积更小。