最近做项目的时候,需要跟人工智能组对接应用接口,要把写好的C函数给Python代码调用,所以打算把写好的代码制作成动态库,给他们直接import,随手记录一点相关知识
1.概念
程序的函数库一般就是:静态函数库、共享函数库以及动态加载函数库
函数库一般来说编译集成了一系列我们要使用的接口(函数),程序源代码编译完成之后有一个链接环节,会通过链接器与使用到的函数库进行链接。
静态函数库的话,事实上就是在程序在链接时整个库会一起编译进目标文件中,而动态函数库则不会,只是编译进去一个链接(符号),这种有点类似硬链接和软链接的区别。这种区别导致编译出来的目标文件的大小有明显差别。
静态函数库在linux下的后缀一般为 .a,动态函数库的后缀一般为.so。
linux下动态函数库(共享库)的命名规则:
2.例程
我们编写一下例程做一下简单记录
我们需要编写一下mytest.c,mytest.h,Makefile(习惯了嵌入式开发,所以还是习惯性编写一下Makefile,简化一下编译流程)
//mytest.h
#ifndef MY_TEST_H
#define MY_TEST_H
void Mytest();
#endif
//mytest.c
#inc