1.test.h
#include <stdio.h>
//函数指针
typedef int (*ADD)(int,int);2.test.c
#include <stdio.h>
int add(int a, int b){printf(".PHONY 测试!\n");return (a + b);
}3.测试程序main.c
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
#include "test.h"int main(){void *handle=dlopen("./libtest.so",RTLD_LAZY);  ADD add=NULL;*(void **)(&add)=dlsym(handle,"add");  int result=add(2,5);printf("a + b = %d\n",result);return 0;
}4.Makefile
#$@--目标文件(main), $^--所有的依赖文件(main.c), $<--第一个依赖文件.
CC := gcc
.PHONY:all clean
# test
SOURCE  := $(wildcard *.c) #把*.c赋值给SOURCE
OBJS    := $(patsubst %.c,%.o,$(SOURCE)) #把*.c替换成*.oall: libtest.so main
libtest.so: test.o@echo $@ $^ "11111"$(CC) -shared -o $@ $^  #编译-shared生成so共享库test.o: test.c@echo $@ $^ "2222"$(CC) -c -fPIC -o $@ $^ #-c只编译不链接; PIC: Position Independent Code   main: main.c@echo $@ $^ "3333"$(CC) -o $@ $^ -ldl #不需指定libtest.so进行编译,执行会在指定目录加载so./main#ldd main
clean:rm  *.so *.o main

Linux简单调用so库及Makefile用法相关推荐

  1. linux怎么调用静态库,Linux 静态库的创建和使用

    简介 在linux下库分两种:静态库和共享(动态)库.这两种库的主要不同在于连接到程序的过程. 在编译程序时,连接器(ld)负责把程序中不同的模块连接起来,产生最终的可执行文件.静态库就是在这一过程连 ...

  2. linux c 调用 so 库

    /***********编译时要链接 -l dl 库************/ #include<stdlib.h> #include<stdio.h> #include< ...

  3. 两台电脑串口传输文件及调用opencv库编程显示图片和文本

    文章目录 一.两台电脑利用串口进行文件传输 (一).实验内容 (二).配置环境 (三).实验过程 (四).结果分析 二.在Ubuntu下基于Linux环境调用opencv库编程显示图片和文本 (一). ...

  4. Linux基础之Libcurl库之HTTPS协议实现人脸识别

    目录 一.前言 二.编译openssl支持libcurl的https访问 三.base64编码 四.封装base64编码函数并人脸识别成功 五.车牌识别 六.总结 一.前言 上一篇文章我们调用libc ...

  5. linux添加自己的库,Linux学习笔记——例叙makefile 增加自定义共享库

    Linux学习笔记--例说makefile 增加自定义共享库 0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己 ...

  6. 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。

    在Linux下如何使用GCC编译程序.简单生成 静态库及动态库.   本文适用于Linux下开发初学者.本文初步讲解在Linux下如何使用GCC编译程序.简单生成静态库及动态库. 一.关于安装.一般系 ...

  7. linux用c++调用动态库

    1.3 用c++静态方式调用动态库libsthc.so: /*cpptest.cc*/    //linux下的c++后缀有cc,cxx, cpp #include "libsthc.h&q ...

  8. linux C语言多线程库pthread中条件变量的正确用法逐步详解

    linux C语言多线程库pthread中条件变量的正确用法: 了解pthread常用多线程API和pthread互斥锁,但是对条件变量完全不知道或者不完全了解的人群. 关于条件变量的典型应用,可以参 ...

  9. CMake从0到1:Linux编译动态库,调用动态库,VSCode单步执行

    工欲善其事必先利其器,如果要想在Linux系统上编写C++代码,常常我们会有如下几个需求: 1.编译可执行文件 2.可执行文件调用动态库,这里通常包括两种情况:(1)自己的动态库,那就得先生成再链接: ...

最新文章

  1. 15-数据结构探险系列-图篇
  2. 【 MATLAB 】eps (浮点相对精度)简介
  3. Linux中link,unlink,close,fclose详解
  4. jdbc链接oracle报错ORA-12505解决办法
  5. shell编程之简单四则运算及数组定义
  6. 04.full_text match查询
  7. 在S/4HANA扩展字段的Available Fields列表里,看不到自己创建的扩展字段该怎么办
  8. Note cancel request的实现原理
  9. Exynos4412裸机开发——中断处理
  10. 同事说rar压缩有风险,让我用zip压缩文件
  11. docker部署mysql项目_docker部署springboot项目(web + mysql)
  12. 2015年创业中遇到的技术问题:141-150
  13. 使用dva脚手架(dva-cli)快速构建React项目
  14. onestage方法_FCOS : 找到诀窍了,anchor-free的one-stage目标检测算法也可以很准 | ICCV 2019...
  15. python3+telnetlib实现简单自动测试
  16. 上传了一个安卓系统摄像头性能测试代码
  17. php iis 重启服务,重新启动IIS即可生效
  18. 个人网站添加百度统计
  19. R语言caret包preProcess()标准化出现错误: Matrices or data frames are required for preprocessing
  20. 基于HTML、CSS、JavaScript、jQuery的app小项目--简易备忘录

热门文章

  1. 世界政府峰会发布了《在区块链上构建超互联未来》文件
  2. css补充、JavaScript、Dom
  3. oracle数据库的重复数据处理
  4. 转载一下如何联系口语
  5. 我平时比较喜欢的几篇技术文章
  6. BPMN 2.0 流程设计
  7. 宕昌一中2021高考成绩查询,2020届毕业生:宕昌一中“拍了拍”你 | 青春不散场 扬帆再起航...
  8. php网页登录制作,thinkphp5 系统登录的实现
  9. java 文件名乱码_详解关于java文件下载文件名乱码问题解决方案
  10. opencv图片旋转90°/-90°/180°(网上很多转换,长宽出问题,这里可以长宽对其)