首页 > 其他分享 >动态链接库的生成和使用(二)

动态链接库的生成和使用(二)

时间:2024-08-31 18:04:29浏览次数:4  
标签:CPPFLAGS OBJS %. double 生成 cpp DEPS 使用 动态链接库

1、编写源文件和头文件

Demo目录下创建testso文件夹在下面创建test.cpp、test.h和Makefile文件

test.cpp:

#include <stdio.h>
#include <stdlib.h>
extern "C"
double calc_pi()
{
	double x = 0;
	double y = 0;
	double pi = 0;
	int num = 0;
	int iter = 0;
	const int try_times = 10000000;
	const double max_val = 32767.0;
	while (iter++ <= try_times)
	{
		x = (double)(rand() % 32768) / max_val;
		y = (double)(rand() % 32768) / max_val;
		if ((x * x + y * y) <= 1)
			num++;
	}
	pi = (4.0 * num) / try_times;
	return pi;
}

test.h

extern "C"
double calc_pi();

Makefile文件

EXECUTABLE:= libtest.so
LIBDIR:=
LIBS:=
INCLUDES:=.
SRCDIR:=

CC:=g++
CFLAGS:= -g -fPIC -Wall -O0 
CPPFLAGS:= $(CFLAGS)
CPPFLAGS+= $(addprefix -I,$(INCLUDES))
CPPFLAGS+= -I.
CPPFLAGS+= -MMD

RM-F:= rm -f

SRCS:= $(wildcard *.cpp) $(wildcard $(addsuffix /*.cpp, $(SRCDIR)))
OBJS:= $(patsubst %.cpp,%.o,$(SRCS))
DEPS:= $(patsubst %.o,%.d,$(OBJS))
MISSING_DEPS:= $(filter-out $(wildcard $(DEPS)),$(DEPS))


.PHONY : all deps objs clean
all:$(EXECUTABLE)
deps:$(DEPS)

objs:$(OBJS)
clean:
	@$(RM-F) *.o
	@$(RM-F) *.d

ifneq ($(MISSING_DEPS),)
$(MISSING_DEPS):
	@$(RM-F) $(patsubst %.d,%.o,$@)
endif
-include $(DEPS)
$(EXECUTABLE) : $(OBJS)
	$(CC) -shared -o $(EXECUTABLE) $(OBJS) $(addprefix -L,$(LIBDIR)) $(addprefix -l,$(LIBS))

 

标签:CPPFLAGS,OBJS,%.,double,生成,cpp,DEPS,使用,动态链接库
From: https://www.cnblogs.com/czy363/p/18390549

相关文章

  • 点云库使用场景以及编译和使用实例
    1点云库概述与应用场景##什么是点云库?点云库是一套专门用于处理三维点云数据的软件工具和算法集合。点云是由大量的三维坐标点组成的数据集,通常用来表示物体或环境的表面。最知名的点云库是开源的PCL(PointCloudLibrary),但还有其他库如Open3D,PDAL(PointDataAbstracti......
  • [postgres]使用pgbench进行基准测试
    前言pgbench是一种在postgres上进行基准测试的简单程序,一般安装后就会自带。pgbench可以再并发的数据库绘画中一遍遍地进行相同序列的SQL语句,并且计算平均事务率。测试准备既然要测postgres,肯定要先有个postgres。安装过程略过。一些环境信息:postgres版本:15.3,安装完成后默认......
  • 20240831_174427 scratch 自制积木的基本使用
    20240903_215445scratch认识自制积木自制积木是自定义的一个积木它的功能由自己决定20240903_225445scratch定义普通自制积木使用位置自制积木模块制作新的积木定义积木使用积木20240903_235445scratch定义带一参数的自制积木需求定义一个祝某某生日快......
  • AI跟踪报道第54期-新加坡内哥谈技术-本周AI新闻: OpenAI最新模型揭晓和全AI生成的游戏
      每周跟踪AI热点新闻动向和震撼发展想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行!订阅:https://......
  • HPC应用&生命科学领域软件AutoDock-GPU详细安装使用教程
    目录应用简介编译安装测试算例及提交脚本应用简介AutoDock-GPU是基于OpenCL的GPU加速版本分子对接软件autodock-4.2.6。可以支持DCU已经其他支持OpenCL的设备,如CPU和NvidiaGPU等。github源码: https://github.com/ccsb-scripps/AutoDock-GPU编译安装AutoDock-GPU......
  • Linux Debian12使用flameshot或gnome-screenshot和ImageMagick垂直合并多张图片后组成
    在发布博客,有时需要滚动截长图,虽然在windows系统有滚动截长图的工具,例如:FastStoneCapture等,但是LinuxDebian系统,这种滚动截长图的工具没有找到合适的。经过自己筛选验证,发现LinuxDebian12使用flameshot或gnome-screenshot截取多张图片,再使用和ImageMagick图像处理工具进行垂直合......
  • 状压DP求解最小生成树
    最小生成树,一般我们会想到Kruskal或Prim,但是如果要求任意子图(仅限于包含部分结点和连接这些结点的所有完整的边)的最小生成树并且查询量很大呢?假设此处结点数量小于\(20\)。首先可以想到状态压缩,预处理出所有子图的最小生成树,但是这样如果\(n\)逼近\(20\)就不行了。状态共\(......
  • Clion 使用
    1.使用CLion进行ROS开发安装基本的ROS环境ROS环境的安装请参考安装ROS。安装CLion下载CLionLinux的下载地址如下:CLion解压CLion将下载的CLion复制到/opt目录下(你可以解压到适合自己的文件夹,只要保证后续使用的路径一致即可),然后在这个目录下使用终端将其解压,命令如......
  • 使用广播星历计算卫星坐标(Python)
    前言本代码为GNSS课程设计代码,仅供参考,使用的计算方法与公式均来源于王坚主编的《卫星定位原理与应用(第二版)》。本代码计算结果可以通过下载精密星历进行比照,误差在1-10m左右。实现功能:读取卫星广播星历,并将其计算为WGS-84坐标系下的坐标,每颗卫星,每15分钟输出一次。广播星历......
  • Wireshark下载安装和使用教程
    ......