linux下将c/c++编译成so库

gcc -fPIC -shared Cat.c -o libcat.so

-fPIC是压制警告
-shared是生成动态库
Cat.c是要编译的文件
-o是要生成的文件的名称

linux下将c/c++生成可执行文件

gcc -rdynamic -o main main.c -ldl

-rdynamic是生成可执行文件
-o是生成的文件的名称
main.c是要编译的文件
-ldl可以理解为要生成一个动态库吧(这个不是太懂)

之后会在当前目录下生成一个main文件
直接./main就可以执行了

下面举个例子

首先写了一个Cat.c

int add(int a,int b){return (a + b);
}

然后把Cat.c编译成一个so库

gcc -fPIC -shared Cat.c -o libcat.so

执行完之后会在当前路径下生成一个libcat.so文件

在写一个main方法,这里写了一个main.c

#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>typedef int (*ADD)(int,int);int main(){#这里调用刚才生成的so库里的add方法void *handle=dlopen("./libcat.so",RTLD_LAZY);ADD add=NULL;*(void **)(&add)=dlsym(handle,"add");int result=add(2,5);printf("%d\n",result);return 0;
}

之后将main.c生成一个可以执行的文件main

gcc -rdynamic -o main main.c -ldl

执行之后会在当前路径下生成一个main文件

直接./main就会打印:7,也就是调用了刚才那个so库方法里的add方法

Linux下简单编译so库,调用另一个so库的方法相关推荐

  1. Linux下简单的邮件服务器搭建

    Linux下简单的邮件服务器搭建 电子邮件服务简介 电子邮件是因特网上最为流行的应用之一,而邮件服务器是一种用来负责电子邮件收发管理的设备,它构成了电子邮件系统的核心. 电子邮件系统的组成  MUA( ...

  2. 从四个问题透析Linux下C++编译链接

    摘要:编译&链接对C&C++程序员既熟悉又陌生,熟悉在于每份代码都要经历编译&链接过程,陌生在于大部分人并不会刻意关注编译&链接的原理.本文通过开发过程中碰到的四个典型 ...

  3. Linux下的编译(环境是centos6.8 gcc 4.4.7)

    Linux下的编译(环境是centos6.8 gcc 4.4.7) 1. 运行命令:yum install gcc gcc-c++ bzip2 bzip2-devel bzip2-libs Pytho ...

  4. Linux下静态编译的一个TIP

    Linux下静态编译的一个TIP | 素包子 Linux下静态编译的一个TIP 2010年3月28日 baoz 阅读评论 linux下静态编译好处很多,一来是可以跨发行版(debian redhat ...

  5. OpenCV在Linux下的编译安装(Ubuntu )

    OpenCV在Linux下的编译安装(Ubuntu ) 1.先安装相关的库: sudo apt-get install build-essential sudo apt-get install lib ...

  6. linux apache 安装 rewrite,linux下单独编译安装Apache rewrite_module

    Redhat linux下单独编译安装Apache rewrite_module Apache已经编译安装完了,今天弄了个lifebox,装完后发现必须得用rewrite,所以就给它装了个~~ 找到a ...

  7. Linux下多线程编译

    linux下多线程编译注意事项: 编译时加入 -lm -lpthread参数 参数说明:-lm  使用math.h中声明的库函数还有一点特殊之处,gcc命令行必须加-lm选项,因为数学函数位于libm ...

  8. Linux编译代码卡死,Linux下970Pro编译卡死的问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本人小白一个,想请教图吧技术佬一个Linux下多线程编译C++时系统卡死的问题. 先说下家里电脑大体配置:CPU是Ryzen 1600X,显卡是华硕战枭G ...

  9. Linux系统怎么编译sin,linux下gcc编译sin函数出错的问题

    linux下gcc编译sin函数出错的问题 收藏 Q: I keep getting errors due to library functions being undefined, but I'm ...

  10. Linux下程序编译通过运行时提示error while loading shared libraries(动态链接库问题)

    问题: Linux下程序编译通过了,但是运行时提示 :error while loading shared libraries: libXXX.so.X: cannot open shared obj ...

最新文章

  1. Java面试题基础知识(收集)
  2. HealthKit开发快速入门教程之HealthKit开发概述简介
  3. eclipse运行时出现Unable to execute dex
  4. Altair HW FEKO+WinProp 2020中文版
  5. android flash闪退,Android全面停止Flash Adobe专注HTML5
  6. 在Linux系统中构建虚拟网络
  7. python进程实例
  8. 关于MySql中自增长id设置初始值
  9. CSDN如何居中对齐
  10. HTML页面背景音乐控制
  11. Wordpress 提速之 Gzip 压缩
  12. C++函数和类的封装
  13. Js 给JSON对象排序
  14. directX 简介
  15. macOS 内置的端口扫描工具
  16. Spring5开发新功能
  17. 英语四级口语考试计算机考吗,英语四级口试必须考吗 不考会怎样
  18. java识别音高_如何找出音乐的音高
  19. centos mysql mariadb_centos7 mysql和mariadb的资料 - 菜鸟头头
  20. 骑士周游(dfs+greedy)

热门文章

  1. Meatycake,51nod2117,树状数组
  2. 计算机教案画圆形和方形,小学信息《画方形和圆形》教学设计
  3. DTL autoescape
  4. 【LeetCode】18. 4Sum 四数之和
  5. 极限编程XP 的12个最佳实践
  6. 阿里巴巴大数据之路-维度设计
  7. tensorflow各个版本的CUDA以及Cudnn版本对应关系
  8. 针对爬取豆瓣top250电影失败的问题
  9. Python eval() 函数看这里就够了
  10. 玻璃幕墙LED透明屏多少钱一平方?为你解答