说明
在linux环境下的链接库分为静态链接库(.a)和动态链接库(.so),本篇文章主要说明第一次创建动态库过程遇到的一些问题
makefile
CC = gcc
TARGET = libUdpPara.so
cJSON_p = ./cJSON/%.c
para = ./udp_para/%.c
cJSON_O = cJSON_Process.o cJSON.o
Para_O = udp_para.o
# -fPIC是创建与地址无关的编译程序,是为了能够在多个应用程序间共享
# -shared是指定生成动态链接库
# LD_LIBRARY_PATH=. 指定先在当前路径寻找链接的动态库.链接动态库时,可以加上一个"-Wl,--rpath=$(DIR)" 选项,可用于指定程序运行时,首先查找的动态库路径。
all:$ $(cJSON_O) $(Para_O)
$(CC) $^ -o $(TARGET) -fPIC -shared
%.o :$(cJSON_p)
$(CC) -c $<
%.o :$(para)
$(CC) -c $<
clean:
rm $(TARGET) -rf;
rm ./*.o -rf;
install:
chmod 777 $(TARGET)
rm $(TARGET) -rf
该makefile可根据自身需要进行修改优化,其中重要的两点就是
-fPIC 确保库与内存地址等无关,便于多个程序调用
-shared 指定生成动态链接库