库

SDL库及SDL_draw库的安装、SDL库的使用 在Ubuntu下使用apt-get安装,由于我在安装过程中出现的错误,要注意一定要在联网的情况下进行安装。分别安装libsdl1.2-dev、libsdl-image1.2-dev、libsdl-mixer1.2-dev、libsdl-ttf2.0-dev、libsdl-gfx1.2-dev。安装完成以后就会生成一个目录,在目录/usr/include下可以使用ls命令查看SDL文件夹中的内容,里面包含了所需要的头文件。 阅读详情

库

库,二进制形式代码,可以被系统载入内存执行。在一定的许可协议下可以复用,实现资源的共享。常见的库格式如StaticCai.libdllCai.lib dllCai.dll  libcai.solibcai.a等

  不同系统库的格式可能不同,甚至也是不兼容的。如 linux和windows

linux下有静态和动态两种库,两者的区别主要在于代码载入的时刻不同。

 一 静态库

  1命名:静态库文件名的命名规范以lib为前缀,紧跟静态库名,扩展名为.a如libhello.a 

  2创建:

#gcc -c test.c

#ar crs libtest.a test.o

3使用:

#gcc -o test main.c -L. -ltest (~libtest)

静态库对函数库的链接是放在编译时期完成,这意味着程序在运行和函数库无关,有利于移植但空间按体积较大。


二 gcc

1常用命令

gcctest.c         : 缺省在当前目录生成可执行文件a.out

gcc-o test test.c   : 生成可执行文件test(-o后面必须跟可执行文件名)

gcc-c test.c        : 生成目标文件test.o

--------------------------------------------------------------------------------
注意:当你使用-o选项时,-o后面必须跟一个文件名.  
--------------------------------------------------------------------------------

2gcc编译器常用选项如下

-shared   :

-static :

-Idirectory : 为include文件的搜索指定目录*

-g : 显示排错信息供 gdb使用*

-Llibpath    :  添加库文件的搜索路径

-llibrary: 用来指定所使用的库文件 *

-Wall:  显示附加的警告信息      

-w : 禁止显示警告信息

用v,指定个区间y -fPIC:编译为位置独立代码,用于共享库。可加载到可执行程序内存的任何地方

-pedantic      : 严格要求符合ANSI标准

-O : 对编译出的代码进行优化

-O: 进行比-O更好的优化

-O3:进行比-O2更好的优化

-p: 产生 prof 所需的信息

-pg :  产生gprof所需的信息

注意:-p-g与 -pg 不同


  三 动态库

  1命名:静态库文件名的命名规范以lib为前缀,紧跟静态库名,扩展名为.so如libhello.so 

  2创建:用v,指定个区间y

#gcc -fPIC -Wall -c test.c

#gcc -shared -o libtest.so test.o

3加载:

系统加载时依赖库名+绝对路径加载过程由动态载入器(dynamiclinker/loader) DL 处理

4链接路径:

ubuntu对动态库的管理在/etc/ld.so.conf*相关文件中配置路径 默认的检索路径一般包含

(1)/usr/lib

(2)/lib

可以根据实际环境决定是否将安装目录写入配置文件或者在LD_LIBRARY_PATH环境变量中新增路径。若需写好后还要执行ldconfig来启用新配置。

设置LD_LIBRARY_PATH:


/etc/profile或者/~.bashrc(区别)
#
找到动态链接库的路径
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/MyLib 
exportLD_LIBRARY_PATH

#
找到静态库的路径
LIBRARY_PATH=$LIBRARY_PATH:/MyLib
exportLIBRARY_PATH

下面是在gcc命令中手动设置搜索路径:(具体gcc–help先差下支持命令)

#添加头文件搜索路径

# gcc foo.c -I /home/xiaowp/include -o foo 

#添加动态库搜索路径

# gcc foo.c -L /home/xiaowp/lib -lfoo -o foo 

#添加静态库搜索路径

#gcc foo.c -L /home/xiaowp/lib -static -lfoo -o fo

5.

android中硬件模块动态库检出如下:

inthw_get_module_by_class(const char *class_id, const char *inst,

conststruct hw_module_t **module)

{

intstatus;

inti;

conststruct hw_module_t *hmi = NULL;

charprop[PATH_MAX];

charpath[PATH_MAX];

charname[PATH_MAX];

if(inst)

snprintf(name,PATH_MAX, "%s.%s", class_id, inst);

else

strlcpy(name,class_id, PATH_MAX);

/*

*Here we rely on the fact that calling dlopen multiple times on

*the same .so will simply increment a refcount (and not load

*a new copy of the library).

*We also assume that dlopen() is thread-safe.

*/

/*Loop through the configuration variants looking for a module */

for(i=0 ; i<HAL_VARIANT_KEYS_COUNT+1 ; i++) {

if(i < HAL_VARIANT_KEYS_COUNT) {

if(property_get(variant_keys[i], prop, NULL) == 0) {

continue;

}

snprintf(path,sizeof(path), "%s/%s.%s.so",

HAL_LIBRARY_PATH2,name, prop);

if(access(path, R_OK) == 0) break;

snprintf(path,sizeof(path), "%s/%s.%s.so",

HAL_LIBRARY_PATH1,name, prop);

if(access(path, R_OK) == 0) break;

}else {

snprintf(path,sizeof(path), "%s/%s.default.so",

HAL_LIBRARY_PATH1,name);

if(access(path, R_OK) == 0) break;

}

}

status= -ENOENT;

if(i < HAL_VARIANT_KEYS_COUNT+1) {

/*load the module, if this fails, we're doomed, and we should not try

*to load a different variant. */

status= load(class_id, path, module);

}

returnstatus;

}



 动态库把库函数的链接载入推迟到程序运行期,有利用资源的共享,利于程序的升级。






拖库 洗库 撞库 阅读详情

相关推荐

ESP8266库目录

【代码】ESP8266库目录。

2401_89619323的博客 799

什么是拖库,撞库和洗库

--------------------------2020-02-06-----------------------武汉加油!中国加油!-----------------------今年这个年是我们陪伴父母最多的一年吧-----平安胜意---------------------------------- 你知道拖库,撞库和洗库么? 什么是拖库(因为谐音,也经常被称作“脱裤”). 拖库这个行为现在...

upup 1万+

os 库、 sys 库、getopt 库 与 filecmp 库,5000 字长文带你搞定四大库

橡皮擦,一个逗趣的互联网高级网虫。新的系列,让我们一起 Be More Pythonic。 滚雪球学 Python 第二轮已完成的文章清单十四、sys 库、os 库、 getopt 库 与 filecmp 库14.1 os 库14.1.1 os 库路径操作14.1.2 os 库进程管理14.1.3 os 库运行环境相关参数14.2 sys 库14.2.1 常见属性如下14.2.2 常见方法如下14.3 getopt 库14.4 filecmp 库14.4.1 filecmp.cmp()、filecmp..

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 2万+

Python 常用内置库 time库、random库、turtle库

输出:time.struct_time(tm_year=2024, tm_mon=3, tm_mday=31, tm_hour=18, tm_min=30, tm_sec=48, tm_wday=6, tm_yday=91, tm_isdst=0)trutle(海龟)是python中的内置的一个标准模块,它提供了绘制线、圆和其他形状的函数,使用该模块可创建图形窗口,在图形窗口中通过简单重复动作直观地绘制界面和图形。输出:Sun,31 Mar 2024 18:31:56。

笨笨轻松熊的博客 2338

【浅析】拖库&撞库

https://blog.youkuaiyun.com/xCnhYKoHj3eK/article/details/81612982 <div class="rich_media_content" id="js_co...

2285

抖音无人直播技术全解析:从原理、实操到合规化思考

直播技术作为内容分发的核心形式,其底层依赖于流媒体协议(如RTMP)与实时音视频编码推流。通过OBS等软件进行场景合成与虚拟摄像头技术,可以实现丰富的画面包装与自动化播放。这项技术的核心价值在于突破人力与时间的限制,实现内容的持续输出与流量获取,在电商带货、品牌展示、陪伴式内容等场景中具有应用潜力。然而,单纯依赖录播循环存在高风险,平台风控系统会通过内容重复性检测与互动行为模型进行识别。因此,更可持续的方向是探索“半无人直播”或自动化辅助工具,例如利用AI数字人驱动或直播切片技术,在合规前提下提升运营效率。

weixin_29895109的博客 508

标准库、HAL库、LL库

以STMicroelectronics的STM32系列为例,标准外设库提供了一组函数,用于简化外设(如GPIO、USART、SPI等)的配置和操作。LL库(低层库)提供了对硬件外设的更底层的访问接口,允许开发者直接操作寄存器,但仍保留了一定的封装以简化常见操作。以STM32的HAL库为例,它封装了更多的硬件细节,提供了一致的接口来操作不同的外设。:需要开发者具备更强的硬件知识,虽然代码复杂,但性能和灵活性最优,适合对性能要求高的应用。,你只需掌握基础操作,很多细节是自动处理的,适合入门和简单应用。

weixin_61944480的博客 4072

Mac上Ollama服务IP访问失败的3种修复方法(含永久生效配置)

本文详细介绍了Mac上Ollama服务IP访问失败的3种修复方法,包括临时环境变量覆盖、永久Shell配置修改及进阶排查技巧。重点解析了OLLAMA_HOST环境变量的配置原理,帮助开发者解决Connection refused问题,实现局域网IP访问Ollama服务的需求。

weixin_29209805的博客 207

c库、POSIX库、C++库、boost库之间的区别和联系

C 库函数:由 ANSI C 和 ISO C 标准定义,是 C 语言编程的基础组成部分,旨在为 C 语言提供通用的、基本的功能。POSIX:是 IEEE 制定的一系列标准,定义了操作系统与应用程序之间的接口规范,目标是让应用程序在不同操作系统上具有可移植性。Boost 库:由 C++ 社区开发和维护,是一个广泛使用的 C++ 库集合,提供了众多高质量、可移植且高效的库。C++ 标准库:由 ISO C++ 标准定义,是 C++ 语言的重要组成部分,随着 C++ 标准的不断更新而发展。

hs977986979的博客 899

2080Ti双卡开启NVLink

本文介绍了如何在Ubuntu 22.04系统下给2080Ti双卡开启NVLink的方法。

flymyd的博客 2901

Chatbox使用指南

Chatbox使用指南

weixin_65289420的博客 2万+

【MCU】寄存器、标准库、HAL库、LL库,这么多库!你叫我怎么选?

1、聊一聊 今天跟大家推荐一首非常暖心的歌曲<What Are Words>,一首歌曲的灵魂并不是歌曲本身,而是歌曲后面的故事,"或许喜欢这首歌,却心疼这个故...

最后一个bug的博客 5245

新能源充电桩充电枪口标准

建立的标准确保了新能源汽车充电的安全性、兼容性和效率,促进了新能源汽车产业的发展。

网络安全的研究者、新能源行业的追求者 4689

【Python】scipy库、sklearn库安装

在 “Settings” -> “Project: <你的项目名>” -> “Project Interpreter” 中,点击齿轮图标,选择 “Add” -> “Conda Environment”。在 “Project: <你的项目名>” -> “Project Interpreter” 中查看是否选择了正确的解释器。选择 “New environment” 并指定您要添加的环境路径,选择好路径后,确认后重新运行项目即可。打开 PyCharm,进入 “File” -> “Settings”

m0_75100832的博客 4729

从NVLINK到EthLink:GPU互联技术演进全解析(含最新行业趋势)

本文深入解析了从NVLINK到EthLink的GPU互联技术演进,重点剖析了Scale-up与Scale-out两种核心范式。文章详细对比了NVLINK、UALINK及革命性的EthLink技术,后者创新性地将以太网改造为支持Load/Store与RDMA双语义的高性能互联网络,旨在打破封闭生态,实现高性能与开放性的统一。最后,文章提供了技术选型指南并展望了未来以以太网为主导、语义融合的行业趋势。

weixin_29204749的博客 178

华为OD机试2025A卷 - 分苹果(Java & Python& JS & C++ & C )

华为OD机试2025A卷 - 分苹果(Java & Python& JS & C++ & C )

算法大师! 720

python re库安装_python 库安装方法及常用库

python库安装方法:方法一:setpu.py1.下载库压缩包,解压,记录下路径:*:/**/……/2.运行cmd,切换到*:/**/……/目录下3.运行setup.py build4.然后输入python,进入python模块,验证是否安装成功方法二:1.Win + R 打开运行窗口,输入cmd回车2.找到pip安装路径——x:\Python xx\Scripts3. 在命令行中切换至该目录c...

weixin_39969976的博客 4138

关于Fluent模拟中的动态接触角UDF实现,详细设计

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1147

anaconda如何查看库,安装库和更新库

1.查看自己有的库 打开anaconda command prompt.(有的可能没写command)我的就是。 在命令行提示符窗口输入:pip list 或 conda list 2.安装库 比如安装numpy库 你可以: pip install numpy 或者 conda install numpy 3.更新所有库 conda update --all ...

qq_36495569的博客 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

标准外设库(STD库)、HAL库、LL库三者区别

2018.1.19HAL库详解见STM32之HAL库详解 及 手动移植 STM32 Embedded Software   工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库。到目前为止,有标准外设库(STD库)、HAL库、LL库三种。前两者都是常用的库,后面的LL库是ST最近才添加,随HAL源码包一起提供,目前支持的芯片也偏少。各库如下所示:   其中,STD库和...

二进制模----细微行动改变影响世界 2688

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

拖库、洗库和撞库

拖库= 获取原始数据库洗库= 处理/破解数据撞库= 用处理后的数据进行攻击一个完整的黑灰产链条往往是:👉 拖库 → 洗库 → 撞库 → 变现(卖数据、盗号、洗钱、诈骗)

2301_78043557的博客 721

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

如何查看python库介绍,以及该库下的函数

查看库的介绍: 1)打开cmd,运行python; 2)import 库名,例如:import pylab; 3)print(help(库名.quiver)),例如:print(help(pylab.quiver)); 查看该库下所有的函数: dir(库名),例如:dir(pylab) #dir()函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回...

Warmer_Sweeter 2万+

pythoncom库_python 流行库、库的基本用法

进入github,输入python 点击see topic 进入python流行的库 链接 https://github.com/topics/python1、QuantLib 金融衍生品数据库2、schedule定时任务 https://github.com/dbader/schedule3、Tenacity。Python重试从此无比简单 https://github.com/jd/tena...

weixin_39614528的博客 800

《C++ 108好库》之1 chrono时间库和ctime库

C++提供了两种时间处理库:chrono和ctime。chrono是C++11引入的高精度时间库,基于时钟(Clocks)、时间点(Time Points)和时间间隔(Durations)三个核心概念,支持纳秒级精度测量和时间运算,适用于性能分析和定时任务。ctime是传统C风格时间库,提供time_t和tm结构体,用于日期时间的格式化和显示转换。chrono适合精确计时,ctime更适合日期时间显示。两者常配合使用,chrono获取时间点后转换为time_t,再通过ctime进行格式化输出。

qq_43550409的博客 1031

什么是撞库、拖库和洗库?

(小偷想办法进入室内)(小偷盗走值钱的东西)由小偷想要入室盗窃的前提就是可以入室,那么,在互联网中,黑客一般都是利用网站自身存在的漏洞来入侵的。这里说的网站漏洞包括网站应用自身的漏洞、网站使用的WEB服务器的漏洞、网站使用的开源框架中的漏洞、网站使用的数据库漏洞等。黑客还有可能会利用系统漏洞,在特定的网站上进行挂马,如果网站管理员在维护系统的时候不小心访问到这些网站,就可能被植入木马,也会引发后续的拖库风险。“洗库”,属于黑客入侵的一种,就是黑客入侵网站,通过技术手段将有价值的用户数据归纳分析,售卖变现。

weixin_51291483的博客 1765
下一篇: UBUNTU 12.04 (AMD64)编译android开发环境全记录
江太翁
博客等级 码龄15年 271粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值