咨询电话:400-035-7887/021-6072 5770
首页 关于我们 下载与支持 产品社区
SPASVO移动站
  • 泽众
  • 自动化测试
    TestOne(一站式自动化测试) ATF(自动化测试框架) AutoRunner(自动化测试) MobileRunner(移动自动化测试)
  • 测试管理
  • 性能测试
    PerformanceRunner (性能测试软件) web pr(在线性能测试) APM (性能监控软件)
  • RPA机器人
  • 研发管理
    ALM(研发管理工具) 代码扫描CA
  • 泽众云测试
    兼容性测试 真机测试 Alltesting云真机
  • 客户案例
  • 合作代理
    为什么加入我们 申请加入代理
  • 全部产品

    性能测试

    PerformanceRunner (性能测试软件) APM(性能监控软件) web-PR(免费在线性能测试)

    RPA机器人

    AutoRunner Process 业务流程挖掘系统

    自动化测试

    TestOne(一站式自动化测试) ATF(自动化测试框架) AutoRunner(自动化测试软件) MobileRunner(移动自动化测试) AR365(自动化测试)

    测试管理

    ALM+TestCenter(生命周期管理软件) ProjectCenter(项目管理软件) TestCenter(测试管理软件) RequisiteCenter(需求管理) CodeAnalyzer(静态分析) 免费版TCE(bug管理工具)

    信创产品

    PerformanceRunner(性能测试软件) ALM+TestCenter(生命周期管理软件) ATF(自动化测试框架) AutoRunner(自动化测试软件) CodeAnalyzer(静态分析)

    测试服务

    第三方验收测试服务 性能测试服务 兼容性测试服务 安全测试服务 SPASVO测试实验室
  • 新闻资讯
  • 解决方案

    金融

    银行 自动化测试解决方案 手机银行兼容性测试解决方案 性能测试解决方案 测试体系与测试管理系统建设解决方案 研发项目管理解决方案 测试管理解决方案 银行众包测试解决方案 大数据测试用例自动生成解决方案 功能测试解决方案 证券公司(投资) 自动化测试解决方案 研发项目管理解决方案 测试管理解决方案 大数据测试用例自动生成解决方案 券商APP兼容性测试解决方案 生产日志回放解决方案 保险 自动化测试解决方案 测试管理解决方案 研发项目管理解决方案 基金 自动化测试解决方案 功能测试解决方案

    研究院所

    需求管理解决方案 真机云测试解决方案 性能测试解决方案 自动化测试解决方案 APM性能调优/全链路压测解决方案 研发项目管理解决方案 测试管理解决方案

    企业

    移动端兼容性测试解决方案 众包测试解决方案 第三方验收测试 性能测试方案 app自动化测试解决方案 安全测试解决方案 自动化测试解决方案 APM性能调优/全链路压测解决方案 研发项目管理解决方案 测试管理解决方案

    高等教育

    软件测试实验室建设方案 测试管理实训方案 测试实训课程方案 性能测试实训方案 移动测试实验室方案 自动化测试实训方案 云真机实验室建设方案 RPA机器人实验室建设方案 软件工程实验室建设方案 高校软件测试教程解决方案 高校软件测试教学资源包解决方案 软件测试教案和课件建设方案 测试学院 测试实战平台 测试实训平台

    医疗行业

    真机云测试解决方案 预决算管理解决方案 第三方验收测试

    政府

    测评中心/机构 真机云测试解决方案 测试实战平台 政府单位/软件园区 性能测试解决方案 自动化测试解决方案 第三方测试解决方案 移动端(app、h5、小程序)兼容性测试解决方案 研发项目管理解决方案 测试管理解决方案
  • 性能测试
  • PerformanceRunner (性能测试软件) APM (性能监控软件)
  • 自动化测试
  • TestOne(一站式自动化测试) ATF(自动化测试框架) AutoRunner(自动化测试) MobileRunner(移动自动化测试)
  • 研发管理
  • ALM(研发项目管理) TestCenter(测试管理软件)
  • RPA机器人
  • 代码扫描CA
  • 云真机
  • 性能测试
  • PerformanceRunner (性能测试软件) APM(性能监控软件) web-PR(免费在线性能测试)
  • RPA机器人
  • AutoRunner Process 业务流程挖掘系统
  • 自动化测试
  • TestOne(一站式自动化测试) ATF(自动化测试框架) AutoRunner(自动化测试软件) MobileRunner(移动自动化测试) AR365(自动化测试)
  • 测试管理
  • ALM+TestCenter(生命周期管理软件) ProjectCenter(项目管理软件) TestCenter(测试管理软件) RequisiteCenter(需求管理) CodeAnalyzer(静态分析) 免费版TCE(bug管理工具)
  • 信创产品
  • PerformanceRunner(性能测试软件) ALM+TestCenter(生命周期管理软件) ATF(自动化测试框架) AutoRunner(自动化测试软件) CodeAnalyzer(静态分析)
  • 测试服务
  • 第三方验收测试服务 性能测试服务 兼容性测试服务 安全测试服务 SPASVO测试实验室
  • 新闻资讯
  • 行业
  • 金融 研究院所 企业 高等教育 医疗行业 政府
  • 关于我们
您的位置:软件测试 >> 测试开发技术 >> 操作系统

Linux静态库和动态库的分析及实现

作者:网络转载 发布时间:[ 2014/6/5 10:09:22 ] 推荐标签:操作系统 Linux 静态库 动态库

  第5步:由.o文件创建动态库文件
  动态库文件名命名规范和静态库文件名命名规范类似,也是在动态库名增加前缀lib,但其文件扩展名为.so。例如:我们将创建的动态库名为myhello,则动态库文件名是libmyhello.so。用gcc来创建动态库。
  在系统提示符下键入以下命令得到动态库文件libmyhello.so。
  # gcc -shared -fPCI -o libmyhello.so hello.o
  #
  我们照样使用ls命令看看动态库文件是否生成。
  # ls
  hello.c hello.h hello.o libmyhello.so main.c
  #
  第6步:在程序中使用动态库
  在程序中使用动态库和使用静态库完全一样,也是在使用到这些公用函数的源程序中包含这些公用函数的原型声明,然后在用gcc命令生成目标文件时指明动态库名进行编译。我们先运行gcc命令生成目标文件,再运行它看看结果。
  # gcc -o hello main.c -L. -l myhello
  # ./hello
  ./hello: error while loading shared libraries: libmyhello.so: cannot open shared object
  file: No such file or directory
  #
  哦!出错了。快看看错误提示,原来是找不到动态库文件libmyhello.so。程序在运行时,会在/usr/lib和/lib等目录中查找需要的动态库文件。若找到,则载入动态库,否则将提示类似上述错误而终止程序运行。我们将文件libmyhello.so复制到目录/usr/lib中,再试试。
  # mv libmyhello.so /usr/lib
  # ./hello
  ./hello: error while loading shared libraries: /usr/lib/libhello.so: cannot restore segment
  prot after reloc: Permission denied
  由于SELinux引起,
  # chcon -t texrel_shlib_t /usr/lib/libhello.so
  # ./hello
  Hello everyone!
  #
  成功了。这也进一步说明了动态库在程序运行时是需要的。
  我们回过头看看,发现使用静态库和使用动态库编译成目标程序使用的gcc命令完全一样,那当静态库和动态库同名时,gcc命令会使用哪个库文件呢?抱着对问题必究到底的心情,来试试看。
  先删除 除.c和.h外的 所有文件,恢复成我们刚刚编辑完举例程序状态。
  # rm -f hello hello.o /usr/lib/libmyhello.so
  # ls
  hello.c hello.h main.c
  #
  在来创建静态库文件libmyhello.a和动态库文件libmyhello.so。
  # gcc -c hello.c
  # ar cr libmyhello.a hello.o
  # gcc -shared -fPCI -o libmyhello.so hello.o
  # ls
  hello.c hello.h hello.o libmyhello.a libmyhello.so main.c
  #
  通过上述后一条ls命令,可以发现静态库文件libmyhello.a和动态库文件libmyhello.so都已经生成,并都在当前目录中。然后,我们运行gcc命令来使用函数库myhello生成目标文件hello,并运行程序hello。
  # gcc -o hello main.c -L. -lmyhello
  # ./hello
  ./hello: error while loading shared libraries: libmyhello.so: cannot open shared object
  file: No such file or directory
  #
  从程序hello运行的结果中很容易知道,当静态库和动态库同名时, gcc命令将优先使用动态库。
上一页123下一页
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。

相关推荐

Linux下开源的DDR压力测试工具曝Linux恶意软件:让树莓派设备挖掘数字货币linux系统中不同颜色的文件夹及根目录介绍软件测试工程师必知必会Linux命令Linux下DNS服务器配置如何成为不可替代的Linux运维工程师?详解Linux进程(作业)的查看和杀死Linux 日志定时轮询流程详解比特币勒索病毒不只Windows系统有,Linux版的来了Linux日志定时轮询流程详解Linux iommu和vfio概念空间解构Linux系统如何低于TCP洪水攻击Linux无损调整分区大小Linux下防火墙配置实例Linux使用Jexus托管Asp.Net Core应用程序Linux中引号的那些事

相关产品

机器人流程自动化

机器人流程自动化

自动化测试工具

自动化测试工具

移动平台自动化测试工具

移动平台自动化测试工具

测试管理工具

测试管理工具

代码质量管理

代码质量管理

软件研发生命周期管理

软件研发生命周期管理

ATF自动化测试框架软件

ATF自动化测试框架软件

性能测试工具

性能测试工具

项目管理软件

项目管理软件

需求管理软件

需求管理软件

更新发布

App、小程序、H5兼容性测试区别在哪些?

2024/9/11 15:34:34

兼容性测试覆盖多少机型,如何选择?

2024/9/10 11:13:49

P-One 在进行性能测试时,如何确保测试结果的准确性和可靠性?

2024/9/10 10:14:12

为什么越来越多的企业选择一站式测试平台?

2024/9/9 18:04:26

功能测试和接口测试的区别

2023/3/23 14:23:39

如何写好测试用例文档

2023/3/22 16:17:39

常用的选择回归测试的方式有哪些?

2022/6/14 16:14:27

测试流程中需要重点把关几个过程?

2021/10/18 15:37:44

热门文章

常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南

咨询电话

021-6072 5770-8054

沪公网安备 31010702002953号

沪ICP备07036474号 2003-2020 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd.

测试工具快速入口

测试管理工具/缺陷管理工具 项目管理软件 自动化测试工具/功能测试工具 移动自动化测试工具/App测试工具 ALM生命周期管理 性能测试工具/压力测试工具 Selenium自动化测试框架 RPA机器人流程自动化

帮助与支持

测试服务 RPA解决方案 核心业务系统测试解决方案 测试用例设计解决方案 接口测试解决方案 界面自动化测试解决方案 移动端自动化测试解决方案 性能测试解决方案 需求管理解决方案 代码管理解决方案 预决算管理解决方案 兼容性测试解决方案 众测(众包测试)测试解决方案 搭建测试体系解决方案 第三方验收测试解决方案 安全测试解决方案

关注我们

咨询热线:021-6072 5770-8054

金融专线:021-6072 5770-8006

sales@spasvo.com

沪ICP备07036474号 2003-2022 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd.
公众
账号

扫描二维码
关注泽众微信公众号

泽众官网公众号
问题
反馈
返回
顶部