我们很多c程序在windows下是以dll形式展现的,在linux则是以so 形式展现的。

windows一般不会因为编译dll文件的编译器版本不同而出先dll文件不能执行。

但是linux下,不同版本内核的linux下编译的c程序,在其他版本的linux下就容易出现无法执行的问题。主要可能是支持程序的内核相对于编译时的内核较高或者版本相对于编译时的内核较低。

那我们如何看别人给我们提供的动态链接库文件(so后缀的)是否能在当前linux系统下可用呢。首先我们就要看他依赖的相关文件是否存在,查看命令如下:ldd file.so

假如我想看jnative的动态链接库在某个版本的linux下是否被支持,先切换到文件所在目录,然后写下如下命令:

ldd libJNativeCpp.so

如果正常,显示如下:

libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x0069c000)
        libm.so.6 => /lib/tls/libm.so.6 (0x00111000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00562000)
        libc.so.6 => /lib/tls/libc.so.6 (0x00134000)
        /lib/ld-linux.so.2 (0x0097b000)
 如果不正常可能显示如下:

./libJNativeCpp.so: /lib/tls/libc.so.6: version `GLIBC_2.4' not found (required by ./JNativeCpp.so)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x0047e000)
        libm.so.6 => /lib/tls/libm.so.6 (0x00111000)
        libc.so.6 => /lib/tls/libc.so.6 (0x0056e000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00c3d000)
        /lib/ld-linux.so.2 (0x0097b000)

这里是那个有名的jni第三方类库的默认的lib,上边的错误信息显示就是说我们的libJNativeCpp.so是在2.4内核下编译的,当前内核版本不支持。经过查看,我当前的linux版本的内核是2.6高于libJnativeCpp.so编译时的内核。

转载:http://blog.csdn.net/kongqz/article/details/4027912

linux下查看动态链接库so文件的依赖的相关组建的更多相关文章

  1. linux下查看动态链接库依赖关系的命令 x86: ldd *.so arm: arm-linux-readelf -d *.so 实际例子: 以项目中用到的库librtsp.so分析: lijun@ubuntu:~/workspace$ arm-hisiv100nptl-linux-ld -d librtsp.so arm-hisiv100nptl-linux-ld:

    linux下查看动态链接库依赖关系的命令 x86:ldd    *.so arm:arm-linux-readelf    -d    *.so 实际例子:以项目中用到的库librtsp.so分析:l ...

  2. Linux下查看alert日志文件的两种方法

    --linux下查看alert日志文件的两种方法: --方法1: SQL> show parameter background_dump_dest; NAME TYPE VALUE ------ ...

  3. linux下查看doc在线帮助文件

    常看到某个linux下的工具,有带有doc结尾的文件,但是新手不知道如何查看. 我一番查找,终于知道了... 比如:ipython这个软件,在ubuntu里面,有ipython-doc的一个包. 安装 ...

  4. Linux下查看根目录各文件内存占用情况

    一.服务器运行一点时间后各种的项目文件,日志文件,数据库备份登,会越来越多,在linux下可以使用 du 和 df 命令查看. 1.df -h 命令查看整体磁盘使用情况 2. 使用 du -ah -- ...

  5. (转)Linux 下 查看以及修改文件权限

    场景:Linux环境下远程部署项目,发现因为文件权限问题,不能执行远端的可执行文件.问题还没解决,待议... 1 查看权限 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名) 那么就 ...

  6. linux下查看和修改文件时间

    一.查看文件时间及相关命令 1.stat查看文件时间 [root@web10 ~]# stat install.log File: "install.log" Size: 3338 ...

  7. Linux 下 查看以及修改文件权限

    查看权限 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些: -rw-rw-r-- 其中: 最前面那个 - 代表的是类型 中间那三个 rw- ...

  8. linux下查看mysql日志文件的方法

    查看mysql日志方法: mysql默认不允许我们查看日志.需要更改一些设置 1 vi 更改配置文件 允许用户查看日志文件 sudo vi /etc/mysql/mysql.conf.d/mysqld ...

  9. linux 下查看有当前文件夹有多少个文件

    ls |wc -w

随机推荐

  1. 2018-2019-2 20165312《网络攻防技术》Exp3 免杀原理与实践

    2018-2019-2 20165312<网络攻防技术>Exp3 免杀原理与实践 课上知识点总结 1.恶意软件检测机制 基于特征码的检测(需要定期更新病毒库) 启发式恶意软件检测(实时监控 ...

  2. Redux 学习总结

    1.Redux 设计理念 Web 应用是一个状态机,视图与状态是一一对应的 所有的状态,保存在一个对象里面 2.基本概念和API Redux 的核心就是 store, action, reducer ...

  3. Troubleshooting 10g and 11.1 Clusterware Reboots (文档 ID 265769.1)

    Troubleshooting 10g and 11.1 Clusterware Reboots (文档 ID 265769.1) This document is intended for DBA' ...

  4. springBoot和c3p0的整合

    首先创建c3p0的数据源类 package com.example.demo.config; import javax.sql.DataSource; import org.mybatis.sprin ...

  5. CTO 技能图谱

    岗位职责 建立技术团队文化 规划技术发展路线 落地产品研发成果 宣传公司技术品牌 吸引优秀技术人才 基本素质 正直诚实的道德修养 谦虚谨慎的工作态度 随机应变的处事风格 统领全局的战略思维 硬技能 技 ...

  6. python爬百度文库课件

    库:re;selenium;requests 源码: from selenium import webdriverimport reimport requests def open_img(items ...

  7. Linux文件系统备份

    1.添加一块硬盘——创建分区   fdisk   /dev/sdb    n   创建新分区      p  打印分区      w 保存   ——分区格式化    mkfs.xfs  /dev/sd ...

  8. matlab-画个拱桥和倒影?

    matlab可用于各行各业的应用中,现在我们就简单画一个拱桥试一试. r=input('请输入半径: '); z=input('请输入弧度: '); figure() %r=4; %画拱洞,用李萨如图 ...

  9. Maven 错误 :The POM for com.xxx:jar:0.0.1-SNAPSHOT is invalid, transitive dependencies (if any) will not be available

    一个大的maven 项目,结构是一个根pom,下面几个小的module,包括了appservice-darc,appservice-entity等,其中appservice-darc 依赖了 apps ...

  10. notepad++之删除空行

    正则表达式替换 查找目标: \r\n{0,1}[\s\t]*\r\n 替换为: \r\n 循环查找:勾选