Linux下简单编译so库,调用另一个so库的方法
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库的方法相关推荐
- Linux下简单的邮件服务器搭建
Linux下简单的邮件服务器搭建 电子邮件服务简介 电子邮件是因特网上最为流行的应用之一,而邮件服务器是一种用来负责电子邮件收发管理的设备,它构成了电子邮件系统的核心. 电子邮件系统的组成 MUA( ...
- 从四个问题透析Linux下C++编译链接
摘要:编译&链接对C&C++程序员既熟悉又陌生,熟悉在于每份代码都要经历编译&链接过程,陌生在于大部分人并不会刻意关注编译&链接的原理.本文通过开发过程中碰到的四个典型 ...
- 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 ...
- Linux下静态编译的一个TIP
Linux下静态编译的一个TIP | 素包子 Linux下静态编译的一个TIP 2010年3月28日 baoz 阅读评论 linux下静态编译好处很多,一来是可以跨发行版(debian redhat ...
- OpenCV在Linux下的编译安装(Ubuntu )
OpenCV在Linux下的编译安装(Ubuntu ) 1.先安装相关的库: sudo apt-get install build-essential sudo apt-get install lib ...
- linux apache 安装 rewrite,linux下单独编译安装Apache rewrite_module
Redhat linux下单独编译安装Apache rewrite_module Apache已经编译安装完了,今天弄了个lifebox,装完后发现必须得用rewrite,所以就给它装了个~~ 找到a ...
- Linux下多线程编译
linux下多线程编译注意事项: 编译时加入 -lm -lpthread参数 参数说明:-lm 使用math.h中声明的库函数还有一点特殊之处,gcc命令行必须加-lm选项,因为数学函数位于libm ...
- Linux编译代码卡死,Linux下970Pro编译卡死的问题
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本人小白一个,想请教图吧技术佬一个Linux下多线程编译C++时系统卡死的问题. 先说下家里电脑大体配置:CPU是Ryzen 1600X,显卡是华硕战枭G ...
- Linux系统怎么编译sin,linux下gcc编译sin函数出错的问题
linux下gcc编译sin函数出错的问题 收藏 Q: I keep getting errors due to library functions being undefined, but I'm ...
- Linux下程序编译通过运行时提示error while loading shared libraries(动态链接库问题)
问题: Linux下程序编译通过了,但是运行时提示 :error while loading shared libraries: libXXX.so.X: cannot open shared obj ...
最新文章
- Java面试题基础知识(收集)
- HealthKit开发快速入门教程之HealthKit开发概述简介
- eclipse运行时出现Unable to execute dex
- Altair HW FEKO+WinProp 2020中文版
- android flash闪退,Android全面停止Flash Adobe专注HTML5
- 在Linux系统中构建虚拟网络
- python进程实例
- 关于MySql中自增长id设置初始值
- CSDN如何居中对齐
- HTML页面背景音乐控制
- Wordpress 提速之 Gzip 压缩
- C++函数和类的封装
- Js 给JSON对象排序
- directX 简介
- macOS 内置的端口扫描工具
- Spring5开发新功能
- 英语四级口语考试计算机考吗,英语四级口试必须考吗 不考会怎样
- java识别音高_如何找出音乐的音高
- centos mysql mariadb_centos7 mysql和mariadb的资料 - 菜鸟头头
- 骑士周游(dfs+greedy)