使用makefile生成.so文件

您所在的位置:网站首页 linux生成so库链接 使用makefile生成.so文件

使用makefile生成.so文件

2024-07-15 18:50:24| 来源: 网络整理| 查看: 265

1.前言

在大型的C/C++工程中,为了节省编译时间,一般都会将一些不会改动的文件生成为动态库(如.so文件),这样可以让链接过程放在运行的时候。 在工程量较少的时候可以自己写语句来生成动态库:

g++ -shared -fPIC -o libTestLib.so Test.cpp

但是当工程量很大的时候,包含的文件非常多,自己写语句就会非常麻烦,因此需要一种工具来自动化生成.so文件。make就是一种可以实现自动化编译的工具,只要你写好了makefile,然后在终端上输入make指令,就可以实现自动编译(make命令会自己去寻找里面的makefile文件)

2.makefile规则

一般在windows下很少有人用这些,因为大多数的IDE(如VS)都已经为你做好了这些工作。 首先了解一下makefile的规则:

target...: prerequisites command

target代表的是目标文件,他可以是可执行文件,也可以是动态库,prerequisites 代表的是生成target所需要的文件或目标 command就是命令

3.makefile实例

首先我的工程目录: main.cpp ./src/operation.cpp ./src/out_function.cpp ./include/operation.h ./include/out_function.h

我的目标是通过operation.cpp和out_function.cpp来生成一个.so的动态库,然后进行动态链接。 在生成.so时,我们可以先生成中间文件.o文件,也可以直接使用cpp文件。 首先是生成.so文件的makefile文件:

target = liboper.so cc = g++ srcs = $(wildcard ./src/*.cpp) includes = -I./include/ OBJS =$(patsubst %cpp, %o, $(srcs)) CFLAGS =-std=c++11 -shared -fPIC all: $(target) $(target): $(OBJS) $(cc) $(CFLAGS) $(OBJS) -o $@ %.o:%.cpp $(cc) -c -pthread $(INCLUDES) $(CFLAGS) $^ -o $@

target:我要生成的目标文件 cc:我使用的编译指令 src:我需要编译的对象 wildcard:通配符,这里表示./src下所有的cpp文件 OBJS: 我编译时需要的中间对象(一般来说是.o文件),这里是将src中所有的cpp文件替换成.o文件 includes:头文件目录(这里没用到) CFLAGS:编译选项,里面的内容就是生成.so文件需要的编译选项 all:编译需要生成哪些目标文件,因为有些情况会生成多个目标文件,all后面可以指定自己要生成哪些目标文件

然后在终端输入make命令就可以生成最终的liboper.so文件,然后我们需要在编译main.cpp的时候指定我们要使用的动态库:

g++ main.cpp -L./ -loper -o demo

-L:依赖的库所在的目录 -l:依赖的具体动态库

4.总结与感悟

因为最近的项目涉及到了这些,因此粗略的学习了一下makefile,当然只能说略懂一点,后续还要跟进。如果有不对的地方希望大家指点~



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭