制作动态库以及Makfile制作动态库并编译(简单版本)

Makfile链接动态库并编译
这里主要是自己写的一个动态库链接版的makefile,比较简单,复杂的我也不会,哈哈哈

CC=GCC
CFLAGS = -Wall -fPIC -o 
TARGET = libmytest.so
MYOBJS = test_main.o
MYTARGET= test_main

OBJS = libmytest.o
SRCS = libmytest.c

$(MYTARGET):$(TARGET)  $(MYOBJS)											 //从这行开始
	$(CC) -o $(MYTARGET) $(MYOBJS) -lmytest   // 5.gcc -o  test_main test_main.o -lmytest

$(MYOBJS):
	$(CC) -c test_main.c                      // 4.gcc -c test_main.c      这步生成test_main.o
$(TARGET):$(OBJS)
	$(CC) -shared -o $(TARGET) $(OBJS)		  // 2. gcc -shared -o libmytest.so  libmytest.o
	cp $(TARGET) /usr/lib                     // 3. 把生成的动态库文件放在 /usr/lib目录下
$(OBJS):$(SRCS)
	$(CC) $(CFLAGS) $(OBJS) -c $(SRCS)        // 1.gcc -Wall -fPIC -o libmytest.o -c libmytest.c 

clean:
	rm *.o $(TARGET) $(OBJS)

开始介绍了,我这总共就只有三个文件,写的有点多,请见谅
test_main.c libmytest.c libmytest.h

我们要把libmytest.c 制作成动态库 ,正常命令为 gcc -Wall -fPIC -shared libmytest.c -o libmytest.so
而在Makefile中 要分为两步来做 分别为
gcc -Wall -fPIC -o libmytest.o -c libmytest.c
gcc -shared -o libmytest.so libmytest.o

即 上面代码段 1 2步 之后编译分两种情况
1 再把libmytest.so复制到/usr/lib , gcc -o test_main.c -lmytest
2 直接编译 gcc -o test_main test_main.c ./libmytest.so ,后面是之前生成动态库的路径
这是命令行实现流程

下面讲下我写的Makfile
Makefile先找到

第一行
$(MYTARGET):$(TARGET)  $(MYOBJS)    
test_main 是我的最终目标文件, $(TARGET)  $(MYOBJS)是我的依赖文件  ,即libmytest.so和libmytest.o
所以继续往下找到,因为$(TARGET)在前面所以先找到他,

$(TARGET):$(OBJS)
知道了之后要$(TARGET) 依赖文件为$(OBJS)
继续找$(OBJS)

$(OBJS):$(SRCS)
$(SRCS)是我们的依赖文件,即libmytest.c
直接执行
	$(CC) $(CFLAGS) $(OBJS) -c $(SRCS)        //1.gcc -Wall -fPIC -o libmytest.o -c libmytest.c 
$(OBJS) 生成了,即可执行
 	$(CC) -shared -o $(TARGET) $(OBJS)		  // 2. gcc -shared -o libmytest.so  libmytest.o
 	cp $(TARGET) /usr/lib                     // 3. 把生成的动态库文件放在 /usr/lib目录下
动态库$(TARGET)弄好了,test_main 还需要 $(MYOBJS) 
执行
	$(CC) -c test_main.c                      // 4.gcc -c test_main.c      这步生成test_main.o
 $(MYOBJS)  即test_main.o也有了
 最后就剩下
 	$(CC) -o $(MYTARGET) $(MYOBJS) -lmytest   // 5.gcc -o  test_main test_main.o -lmytest
 直接生成test_main文件

Makefile  写好啦,  直接make
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值