全网首发:由两个库同名函数,看LINUX动态库加载及调用

简介: 全网首发:由两个库同名函数,看LINUX动态库加载及调用

最近的字体问题,有点怪:


系统库叫freetype,吾库叫tsfreetype。

执行程序先freetype,随后在使用时加载tsfreetype。功能出错。

使执行程序强制依赖tsfreetype,功能正常。

 为什么出错?因为两个库有同名函数。你在调用的时候,系统按照先入为主的原则搜索。这听起来是正常的。 碰到这种情况,通过函数改名即可解决。


 我们来看另外一个例子:


freetype库,B函数,调用C。

tsfreetype库,D函数,调用C。

 现在问,D函数调用C,C是哪个?测试后,结论是不一定:


在KYLIN上,优先在本库中搜索。

在UOS上,原则依然是先加载的库优先。这就悲剧了,因为这个时候已经乱七八糟,结果不可预料。

 这个问题怎么解决呢?改变加载库顺序。强制依赖,指定搜索路径。参考其他博文。

目录
相关文章
|
10月前
|
Linux 编译器 vr&ar
Linux的动态库与静态库
静态库在编译时直接嵌入到最终的可执行文件中。
213 0
|
存储 Linux
linux中的目录操作函数
本文详细介绍了Linux系统编程中常用的目录操作函数,包括创建目录、删除目录、读取目录内容、遍历目录树以及获取和修改目录属性。这些函数是进行文件系统操作的基础,通过示例代码展示了其具体用法。希望本文能帮助您更好地理解和应用这些目录操作函数,提高系统编程的效率和能力。
448 26
|
Linux
【Linux】System V信号量详解以及semget()、semctl()和semop()函数讲解
System V信号量的概念及其在Linux中的使用,包括 `semget()`、`semctl()`和 `semop()`函数的具体使用方法。通过实际代码示例,演示了如何创建、初始化和使用信号量进行进程间同步。掌握这些知识,可以有效解决多进程编程中的同步问题,提高程序的可靠性和稳定性。
951 19
|
Linux Android开发 开发者
linux m、mm、mmm函数和make的区别
通过理解和合理使用这些命令,可以更高效地进行项目构建和管理,特别是在复杂的 Android 开发环境中。
924 18
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
793 15
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
709 13
|
Linux
Linux0.11 文件打开open函数(五)
Linux0.11 文件打开open函数(五)
257 0
|
Linux 开发者
Linux文件编程(open read write close函数)
通过这些函数,开发者可以在Linux环境下进行文件的读取、写入和管理。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
391 4
|
存储 Linux
Linux文件编程(open read write close函数)
Linux文件编程(open read write close函数)
741 0
|
Linux
Linux系统调用二、open()函数与close()函数介绍
Linux系统调用二、open()函数与close()函数介绍
690 0
Linux系统调用二、open()函数与close()函数介绍
下一篇
开通oss服务