Linux下动态库(*.so)的生成和使用 [2014-01-02更新]

Ubuntu18.04安装cJSON之后,找不到文件 libcjson.so.1 文章目录错误信息反思:是我没有成功安装cJSON 吗?搜索博客:是链接器的问题吗?是链接器ld的默认搜索路径不包含/usr/local/lib吗?问题原来竟是它!!!经验教训 错误信息 andrew@andrew-virtual-machine:1.cJSON$ gcc 1.test.c -I ../common/ parse_conf.c -lcjson andrew@andrew-virtual-machine:1.cJSON$ ./a.out ./a.out: error while loading 阅读详情
本文结合自己编写的cJSON Makefile进行简单说明。

Makefile文件内容如下:
-------------------------------------------------------------------
all: libcjson.so test

libcjson.so: cJSON.o
    cc -shared -o libcjson.so cJSON.o      # 添加 -shared 参数

test: test.o
    cc -o test test.o -lm -L./ -lcjson     # -L 指定动态库所在的路径

cJSON.o: cJSON.h cJSON.c
    cc -fpic -c cJSON.c                    # 添加 -fpic 参数

test.o: test.c
    cc -c test.c

clean:
    rm -rf *.o *.so test
-------------------------------------------------------------------

# ./test          // 直接运行会出现如下错误
./test: error while loading shared libraries: libcjson.so: cannot open shared object file: No such file or directory

解决方法:
方法一:将 *.so 拷贝至 /lib 或 /usr/lib 目录;
方法二:执行 export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH,将 *.so 所在路径,即当前路径添加到环境变量中。

由此可见,动态库在程序链接和运行时都需要使用。


sysbench tpcc-mysql_MySQL压测①--sysbench安装与使用 IP架构sysbench部署服务器:172.17.100.107压测服务器:172.17.100.100MySQL部署目录:/usr/local/mysql前置工作1.完成MySQL的安装(MySQL5.7最新版本自动部署脚本:MySQL5.7自动部署脚本)2.完成动态库文件的安装yum install -y openssl libtool#可能遇到的报错1.在make之前,需要修改lib库,否则... 阅读详情

相关推荐

Heartbleed漏洞深度解析:OpenSSL内存越界与修复实战

Heartbleed(CVE-2014-0160)是典型的SSL/TLS底层库内存越界读取漏洞,源于OpenSSL心跳机制中缺乏长度校验,导致攻击者可无痕窃取服务器内存敏感数据。其原理本质是C语言层面的缓冲区边界失控,技术价值在于暴露了密码学基础组件‘信任根’的脆弱性——即便上层应用安全合规,底层库缺陷仍可击穿整个PKI信任链。典型应用场景涵盖Web服务器、邮件系统、云原生容器及物联网固件等广泛依赖OpenSSL的基础设施。本文聚焦真实生产环境中的精准识别、安全修复与三重验证,特别强调OpenSSL版本判断

weixin_30383279的博客 479

Linux 下用 Clion 编写及调用共享库的实践

https://zetaoyang.github.io/post/2016/11/05/linux-shared-object.html 尝试了一下,Windows 下 Codeblocks 利用 Mingw 编译器编写动态链接库,结果虽然 dll 是生成了,但过程还是不太满意。因为 dll 是 Windows 下才用到的,似乎用 GNU 的编译器不太合适,最终还是改用 VS2015 (

常思考->有目标->重实践->善反思 1万+

Heartbleed漏洞深度防护:从内存检测到零信任重建

Heartbleed(CVE-2014-0160)是SSL/TLS协议中因心跳扩展边界检查缺失引发的高危内存泄露漏洞,其本质是未校验输入长度导致的memcpy越界读取。该漏洞不依赖社会工程或代码执行,仅通过畸形TLS心跳包即可持续窃取私钥、会话令牌等敏感内存数据。尽管OpenSSL 1.0.1g已修复,但大量嵌入式设备、IoT终端及老旧系统仍运行含漏洞的1.0.1e/f版本,构成隐蔽长尾风险。本文聚焦实战防护体系:基于符号表与反汇编的静态识别、内存熵值分析的动态探针、LD_PRELOAD内存隔离加固、SMA

weixin_33933118的博客 376

Linux下so文件的生成和使用

环境:Vmware Workstation;CentOS-6.4-x86_64 说明: 1、源文件中不能有main函数;写so文件的时候使用C语言写,不要用C++。 2、在使用的时候,一定要保证存在头文件和.so文件。 (创建目录testso,并把myso.h和libmyso.so拷贝到testso目录下) 程序: 创建一个名字为libmyso.so的共享库文件,然后再定义一个程序来调用这个共享库文件。 步骤: 1、创建生成so文件的makefile: .SUFFIXES:.c .o CC=gcc

我不是码农的博客~~~ 5513

Distributions三重世界:操作系统、概率模型与软件分发的工程统一

Distribution(分布/分发)是计算机系统中描述‘不确定性结构化表达’的核心范式。从Linux发行版的ABI稳定性,到统计建模中Beta、Log-Normal等概率分布对真实业务数据的拟合能力,再到pip、conda、Docker镜像所承载的软件包分发契约,三者共同构成现代AI与云原生系统的确定性基石。理解glibc版本兼容性、分布参数估计方法(MLE/贝叶斯)、wheel平台标签(如manylinux_2_17_x86_64)等关键技术细节,直接决定模型可复现性、A/B测试有效性及CI/CD部署成

congli3478的博客 420

Ubuntu 20.04 TensorFlow GPU安装避坑指南:CUDA 11.8 + TF 2.12.0稳态配置

TensorFlow 是基于 Python 的开源机器学习框架,其 GPU 加速依赖 CUDA 和 cuDNN 工具链的严格版本协同。在 Ubuntu 20.04 系统中,glibc 2.31、Python 3.8 及系统包管理机制构成特殊约束环境,导致默认 pip 安装易出现 libcublas.so.11 找不到、GPU 不识别等典型问题。核心原理在于预编译 wheel 对底层 ABI 和动态库路径的高度敏感性,技术价值体现在生产环境的稳定性与可复现性——避免因版本错配引发的推理延迟、内存泄漏或训练中断

weixin_33862993的博客 317

动态调用动态库方法 | from web

转载自:http://blog.sina.com.cn/s/blog_6294abe70100s66x.html     关于动态调用动态库方法说明 一、        动态库概述 1、  动态库的概念 日常编程中,常有一些函数不需要进行编译或者可以在多个文件中使用(如数据库输入/输出操作或屏幕控制等标准任务函数)。可以事先对这些函数进行编译,然后将它们放置在一些特殊的目标代码文件中,

罗马非一日建成 1732

cjson编译好的动态链接库,so和dll,32位

cjson编译好的动态链接库,so和dll,32位,可以在loadrunner中直接使用

Linux aarch64交叉编译之cJSON解析器

cJSON是一种JSON格式的解析库,其主要功能就是构建(封装)和解析(解封装) Json 格式,实现非常简洁,核心只有2个文件,一个cJSON.c文件,一个cJSON.h头文件。JSON#PC Linux X86 / X86_64 编译cd buildcmake ..make#嵌入式Linux debian11 aarch64cd buildmake当然这里Header文件还是需要单独拷贝出去的。...

wangdsh的博客 2424

GEE进行Theil-Sen Median斜率估计和Mann-Kendall检验

Python实现Theil-Sen Median斜率估计和Mann-Kendall检验// 定义时间范围//NDVI图像集合// 定义每年的开始和结束日期// 加载NDVI数据集,按日期过滤,并计算最大值.max()}));// 计算Sen斜率并剪裁// 可视化Sen斜率Map.addLayer(senSlope.select('slope'), vis, "Sen斜率 ");// MK检验// 创建一个列表,包含年度NDVI图像的list。

qq_44894692的博客 965

DeepSeek+Dify实战:零代码构建智能SQL生成器

本文详细介绍了如何利用DeepSeek和Dify零代码构建智能SQL生成器,帮助非技术人员通过自然语言查询数据库。文章涵盖从数据准备、知识库设计到Agent配置的全流程,并提供了优化技巧和实际应用案例,显著提升团队数据查询效率。

weixin_29311017的博客 419

剖析:arm-linux-gnueabihf-gcc 编译的程序在 Android 上提示 ‘No such file or directory‘ 的深层原因与通用解法

本文深入分析了使用arm-linux-gnueabihf-gcc编译的程序在Android上提示'No such file or directory'错误的根本原因,指出动态链接器路径差异是关键问题。提供了静态链接、动态库移植和修改动态链接器路径三种解决方案,并详细比较了各方案的优缺点,帮助开发者高效解决跨平台兼容性问题。

weixin_34315485的博客 363

Pinocchio 结合 CasADi 进行 IK 逆运动学及 Mujoco 仿真

摘要:本视频演示了如何利用Pinocchio和CasADi实现机械臂逆运动学(IK)求解,并在Mujoco中进行仿真。通过构建优化问题(最小化位姿误差),结合IPOPT求解器对机械臂关节角度进行优化。代码支持导入URDF/MJCF模型,并以so100机械臂为例,实现了末端执行器位置跟踪的仿真测试。关键步骤包括:建立平移/旋转误差函数、设置约束条件、调用CasADi求解,最终在Mujoco中实时更新关节状态完成运动控制。

darcsdn 1003

opencv 3.1编译 linux,Ubuntu 编译安装 OpenCV 3.1

目标系统:Ubuntu 16.04-64bitOpenCV版本:opencv-3.1.0安装步骤安装 cmake。sudo apt-get isntall cmake cmake-qt-gui解压源码包 opencv-3.1.0.tar.gz创建构建目录 cd opencv-3.1.0 && mkdir build && cd build启动 cmake-gui。...

weixin_42493639的博客 173

Palantir 产品架构深度解析:从本体到AI的决策智能平台

本文深度解析了Palantir决策智能平台的核心产品架构。其核心在于构建企业级的“本体”(Ontology),即业务世界的“数字孪生”,通过数据、逻辑、操作三层抽象统一语义。平台以此为基础,通过Foundry构建数字孪生,并通过AIP(人工智能平台)实现本体增强生成(OAG),将AI深度融入业务,形成从数据感知、智能分析到行动执行的完整决策闭环。

ooo22的博客 736

利用李雅普诺夫函数开发航天器姿态控制系统

本文基于李雅普诺夫函数控制方法,采用修正罗德里格斯参数(MRP)描述航天器姿态,设计了姿态控制律。通过构造能量型李雅普诺夫函数,推导出保证系统稳定的控制闭环方程,实现了航天器从初始状态到目标状态的稳定转换。针对MRP参数可能出现的奇异性问题,采用影子集进行规避。仿真实验包含两种模式:非追踪模式(目标状态为0)和追踪模式(目标为三角函数轨迹)。结果表明,该控制方法能够有效实现姿态稳定和轨迹跟踪,在短暂调整后即可精确跟随目标轨迹。控制律设计考虑了不同参考系间的转换,通过DCM矩阵处理目标角速度的坐标变换问题。

weixin_50227659的博客 1221

linux重新链接库命令,Linux动态链接库的应用学习

Linux系统下分为两种类型的函数库:1. 静态库静态库的链接工作是在程序编译阶段完成的。每个需要调用该静态库的程序中都有一份该库的拷贝,所以静态库在程序中的绝对位置在编译阶段就确定下来了;由于多个程序中同时有多份静态库的拷贝,所以增大了程序的大小。2. 动态链接库动态链接库在程序编译阶段不会被拷贝到程序中。它是程序在运行阶段需要调用库时才去将函数库链接到可执行程序中的。由于它是动态加载的,所以它...

weixin_34887221的博客 1008

dht11在oled上显示温度 stm32l432kc,如何实现?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1202

Linux(Ubuntu)配置问题集

Cannot set LC_CTYPE to default locale: No such file or directory 安装Ubuntu Server版本(不带桌面环境)时,如果安装时的语言选择了中文,发现在字符界面很多命令的输出结果中包含菱形方块乱码。我们可以修改/etc/default/locale 文件把中文环境改为英文环境,来解决这个问题,方法是把关键的 LA...

dengdi8115的博客 203

基于STFT和卷积神经网络的时序数据分类

我们提供了相应的代码和数据,读者可以直接运行并尝试在自己的数据集上进行分类实验。在本文中,我们将介绍一种基于短时傅里叶变换(STFT)和卷积神经网络(CNN)的时序数据分类方法。我们将提供可直接运行的代码和数据,以帮助读者理解和实现这一方法。STFT可以提取信号的频谱信息,有助于捕捉时序数据中的关键特征。在这个例子中,我们将使用一个简化的手势识别数据集作为示例。在这段代码中,我们使用Adam优化器和稀疏分类交叉熵损失函数进行模型的编译。然后,我们使用训练集进行模型的训练,同时使用测试集进行模型性能的验证。

CodeWOW的博客 694

JAVA:Spring Boot 集成 Forest 优雅的 HTTP 客户端

Forest是一个优雅的Java HTTP客户端框架,通过注解式声明简化HTTP接口调用。它支持多HTTP客户端、自动参数绑定、序列化、重试机制和拦截器等功能。本文演示了如何在Spring Boot中集成Forest,包括配置、接口定义和调用示例,还展示了POST请求、文件上传等常见场景。相比传统HTTP客户端,Forest具有声明简洁、功能完善的特点,特别适合微服务调用和第三方API对接,能显著提升开发效率和代码可维护性。

木头 427

ROS Indigo下MoveIt安装避坑指南:APT方案与环境依赖解析

MoveIt是ROS生态中官方认证的机器人运动规划中间件,其本质是一套耦合OMPL规划算法、FCL碰撞检测与RViz可视化能力的完整框架。理解其安装过程需从ROS依赖管理机制出发:APT包通过预编译二进制保障ABI兼容性,而源码编译易因gcc版本、Boost Python接口或libfcl.so动态链接失败导致运行时崩溃。在ROS 1 Indigo环境下,Ubuntu 14.04.6 LTS内核与libstdc++6版本构成关键约束条件,直接影响moveit_core等核心库的加载稳定性。典型应用场景包括P

weixin_34212762的博客 401

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

StarUML 4.x安装配置全解:兼容性、授权与汉化三大断层实战指南

UML建模工具是软件工程设计的关键基础设施,其稳定运行依赖于环境兼容性、授权机制与本地化支持三重技术基础。StarUML作为主流开源UML工具,自4.x版本起采用Electron+React架构,引发Windows权限管控收紧、macOS Hardened Runtime拦截、Linux GLIBCXX版本不匹配等系统级兼容问题;同时授权逻辑从本地license.dat升级为OAuth 2.0 Token验证,支持离线时间戳续期这一合规后门;汉化也不再是简单文件替换,而需基于AST修改i18n动态加载路径并

weixin_33923762的博客 334

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: boa 移植与配置 [2013-12-30更新]
下一篇: Ubuntu包安装问题(E: Broken packages)[2014-01-03更新]
xb_ma
博客等级 码龄18年 23粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值