gcc生成shared library及可执行文件

2023-10-27

在IC验证中,复杂算法的reference model的编写比较耗费时间,通常我们会采用算法人员的matlab的算法模型或者c模型作为golden modelDUT(design under test)的输出结果进行比对。验证环境通过DPI-C接口调用c-model进行算法处理。为了算法模型及文件的清晰可见,我们会c-model封装在.so(shared library)中。那么,如何产生动态链接库呢?

假设名称为libtest.so

gcc x.c y.c z.c -fPIC -shared -o libtest.so

main.c和动态连接库进行连接生成可执行文件

gcc main.c -L. -ltest -o main

#测试是否动态连接,如果列出libtest.so,那么应该是连接正常了

ldd main

-fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。

-L.:表示要连接的库在当前目录中

-ltest:编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称

LD_LIBRARY_PATH:这个环境变量指示动态连接器可以装载动态库的路径。当然如果有root权限的话,可以修改/etc/ld.so.conf文件,然后调用/sbin/ldconfig来达到同样的目的,不过如果没有root权限,那么只能采用输出LD_LIBRARY_PATH的方法了。

Note:编译的时候可以会报这个错误

rtwtypes.h:37:22: fatal error: tmwtypes.h: No such file or directory
 #include "tmwtypes.h"

解决办法:

https://www.exefiles.com/zh-cn/h/tmwtypes-h/ 下载即可,或者去matlab的安装目录下extern\include\文件夹下复制过来。

参考文献:https://www.cnblogs.com/fence/archive/2009/09/29/1576503.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gcc生成shared library及可执行文件 的相关文章

随机推荐

  • C++STL详解(十) -- 使用哈希表封装unordered_set和unordered_map

    文章目录 哈希表模板参数改造 针对模板参数V改造 增加仿函数获取具体数据类型 哈希表的正向迭代器 正向迭代器中的内置成员 正向迭代器的成员函数 哈希表插入函数的修改 适用于unordered map 一个类型K去做set和unordered
  • xp系统web服务器不可用,WindowsXP系统无法使用火狐浏览器访问网页?教你解决方法...

    汽车中的SL SE和SX分别是什么 汽车中的SL即为该车为标准配置 低配62616964757a686964616fe78988e69d8331333433623732版 SE 即为高配版 SX是豪华版 汽车排量后边的这两个缩写字母 实际是
  • 二叉树中序遍历 (C语言实现)

    在计算机科学中 树是一种重要的非线性数据结构 直观地看 它是数据元素 在树中称为结点 按分支关系组织起来的结构 二叉树是每个节点最多有两个子树的有序树 通常子树被称作 左子树 left subtree 和 右子树 right subtree
  • ping不通的常见原因和解决办法

    Ping是Windows Unix和Linux系统下的一个命令 ping也属于一个通信协议 是TCP IP协议的一部分 利用 ping 命令可以检查网络是否连通 如果ping不通则可以通过以下方式寻找故障原因 1 ping 127 0 0
  • python 数据分析与可视化

    python数据分析及可视化 涉及内容 1 Pandas的Series数据类型的定义及相关操作函数 2 Pandas的DataFtame数据类型的定义及相关操作函数 3 Pandas的统计功能 4 Pandas的合并连接和排序 5 Pand
  • win10查看系统激活状态

    快捷键 win R 然后输入 slmgr vbs xpr 或者 slmgr vbs dlv
  • 基于SSM框架的CMS内容管理系统的设计与实现

    基于SSM框架的CMS内容管理系统的设计与实现 付源码 论文 工作任务 1 通过学习和查找相关的资料 掌握SpringMVC Spring Mybatis框架的搭建及开发 通过学习掌握freemarker BootStrap等前端模板引擎和
  • Qt 编写多窗口程序

    该文章原创于 Qter开源社区 www qter org 作者 yafeilinux 转载请注明出处 导语 程序要实现的功能是 程序开始出现一个对话框 按下按钮后便能进入主窗口 如果直接关闭这个对话框 便不能进入主窗口 整个程序也将退出 当
  • Java2023毕业设计诗词发布系统前后端分离(附下载链接)vue+Spring Boot+mybatis+sql+maven

    Java2023毕业设计诗词发布系统前后端分离 附资源下载链接含数据库文件 vue Spring Boot mybatis sql maven 注册 登录 查看个人信息 修改个人信息 诗词曲列表 搜索 诗词曲详情 评论列表 点赞与取消点赞
  • python实现:输出整数数组前半段非递减、后半段非递增并且从小到大不重复打印数字

    问题 给定一个正整数数组 前半段非递减 后半段非递增 要求从小到大不重复打印数字 给定时间复杂度O n 空间复杂度O 1 解题思路 分析 这道题 可以理解为合并两个有序数组 并且合并后的数组中 无相等的元素即可 基于时间复杂度和空间复杂度的
  • Linux命令学习 - Crontab【排错篇】

    Crontab 排错篇 文章目录 Crontab 排错篇 no crontab for root 查看Cron的日志 修改rsyslog文件 重启rsyslog服务 重启cron服务 查看日志文件 no crontab for root 当
  • Mac版office word保存后退出文件莫名被删除问题

    来源百度贴吧 http tieba baidu com p 3674902738 在mac terminal 中执行 sudo find name tmp 按提示输入密码 一般就是电脑开机密码 在 private var folders j
  • CentOS 7.5 搭建以太坊私联(联盟链)及区块链浏览器

    环境 操作系统为win10 虚拟化2个centos7 5 系统 cpu 4核 内存8G 本文将以node1 node2代表虚拟机节点1 和虚拟机节点2 此篇将搭建2个节点 node1 会搭建区块链浏览器 环境准备 node1 搭建 关闭防火
  • python(matplotlib)绘制y=x^2函数曲线和正弦曲线

    python matplotlib 绘图 这次绘制两个简单常见的图形 分别是y X 2曲线和正弦曲线 具体的案例如下所示 1 绘制要求 利用matplotlib库文件 画图函数y x 2的图形 绘制过程 import matplotlib
  • socket超时

    一 连接超时 这种超时在前面的例子中已经使用过 在Socket类中只有通过connect方法的第二个参数才能指定连接超时的时间 由于使用connect方法连接服务器必须要指定IP和端口 因此 无效的IP或端口将会引发连接超时错误 二 读取数
  • CompletableFuture异步编程

    1 前言 数据库中有订单表 而订单表分库分表了 查询起来要横跨库和表 比较麻烦 所以搞了搞异步编程 2 实现 因为分库是按照年份来分的 分表是按照月份来分的 所以我初步思考了一下 按月异步去查询 然后开启多线程异步查询 这样查询速度能成几何
  • 秒杀架构设计理念

    限流 鉴于只有少部分用户能够秒杀成功 所以要限制大部分流量 只允许少部分流量进入服务后端 削峰 对于秒杀系统瞬时会有大量用户涌入 所以在抢购一开始会有很高的瞬间峰值 高峰值流量是压垮系统很重要的原因 所以如何把瞬间的高流量变成一段时间平稳的
  • C++编程——继承

    文章目录 1 继承的基本语法 2 继承方式 3 继承的对象模型 4 继承中构造和析构顺序 5 继承中同名成员处理 6 继承中同名静态成员处理方式 6 1 通过对象访问 6 2 通过类名访问 7 多继承语法 7 1 多继承的对象模型 8 菱形
  • 目录与文件系统--OS

    目录与文件系统 前面一节我们完成了第三层抽象 就是将盘块号抽象到文件 这一次 我们要对磁盘再进行一次抽象 将磁盘抽象为一个文件系统 用户看到的磁盘就是一个文件目录的结构 完成第四层抽象主要就是实现文件系统到磁盘的映射关系 文件系统 抽象整个
  • gcc生成shared library及可执行文件

    在IC验证中 复杂算法的reference model的编写比较耗费时间 通常我们会采用算法人员的matlab的算法模型或者c模型作为golden model和DUT design under test 的输出结果进行比对 验证环境通过DP