精华内容
下载资源
问答
  • linux 查看所有打开so档的进程

    千次阅读 2017-12-13 16:35:18
  • 在学校集群上装tensorflow,import tensorflow时出现ImportError: /lib64/libc.so.6: version `GLIBC_2.16' not found,网上查资料按...集群linux版本(red hat)太低了,起来太麻烦,把系统修复好之后我就折腾了。
  • 树霉派gcc6.3.0版本dlopen一个4.6gcc版本编译出来的so库,吐血得发现报的错误是no such file or directory,一直以为是我自己打开的方式不对,结果试了下自己写一个.so动态库文件,按照原来调用方法是可以打开的 ...

    网上说高版本的gcc可以兼容低版本gcc编译出来的动态so库。但好像并不可以。

    用树霉派gcc6.3.0版本dlopen一个4.6gcc版本编译出来的so库,吐血得发现报的错误是no such file or directory,一直以为是我自己打开的方式不对,结果试了下自己写一个.so动态库文件,按照原来调用方法是可以打开的  https://blog.csdn.net/hnxijie/article/details/52152716。

    心中一万个草泥马飘过。。。。。



    展开全文
  • linux如何查找.so

    千次阅读 2012-01-18 10:53:51
    从网上找的,来源已经可考,mark一下,备忘   Linux 运行的时候,是如何管理共享库(*.so)的?在 Linux 下面,共享库的寻找和加载是由 /lib/ld.so 实现的。 ld.so 在标准路经(/lib, /usr/lib) 中寻找应用程序...

    从网上找的,来源已经不可考,mark一下,备忘

     

    Linux 运行的时候,是如何管理共享库(*.so)的?在 Linux 下面,共享库的寻找和加载是由 /lib/ld.so 实现的。 ld.so 在标准路经(/lib, /usr/lib) 中寻找应用程序用到的共享库。

    但是,如果需要用到的共享库在非标准路经,ld.so 怎么找到它呢?

    目前,Linux 通用的做法是将非标准路经加入 /etc/ld.so.conf,然后运行 ldconfig 生成 /etc/ld.so.cache。 ld.so 加载共享库的时候,会从 ld.so.cache 查找。

    传统上,Linux 的先辈 Unix 还有一个环境变量:LD_LIBRARY_PATH 来处理非标准路经的共享库。ld.so 加载共享库的时候,也会查找这个变量所设置的路经。

    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./lib

    export LD_LIBRARY_PATH

    但是,有不少声音主张要避免使用 LD_LIBRARY_PATH 变量,尤其是作为全局变量。这些声音是:

    * LD_LIBRARY_PATH is not the answer - http://prefetch.net/articles/linkers.badldlibrary.html

    * Why LD_LIBRARY_PATH is bad - http://xahlee.org/UnixResource_dir/_/ldpath.html 

    * LD_LIBRARY_PATH - just say no - http://blogs.sun.com/rie/date/20040710

    解决这一问题的另一方法是在编译的时候通过 -R<path> 选项指定 run-time path。

    1. 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library会找不到

    2. 想往上面两个目录以外加东西的时候,一定要修改/etc/ld.so.conf,然后再调用ldconfig,不然也会找不到。

    比如安装了一个mysql到/usr/local/mysql,mysql有一大堆library在/usr/local/mysql/lib下面,这时就需要在/etc/ld.so.conf下面加一行/usr/local/mysql/lib,保存过后ldconfig一下,新的library才能在程序运行时被找到。

    3. 如果想在这两个目录以外放lib,但是又不想在/etc/ld.so.conf中加东西(或者是没有权限加东西)。那也可以,就是export一个全局变量LD_LIBRARY_PATH,然后运行程序的时候就会去这个目录中找library。一般来讲这只是一种临时的解决方案,在没有权限或临时需要的时候使用。

    4. ldconfig做的这些东西都与运行程序时有关,跟编译时一点关系都没有。编译的时候还是该加-L就得加,不要混淆了。

    5. 总之,就是不管做了什么关于library的变动后,最好都ldconfig一下,不然会出现一些意想不到的结果。不会花太多的时间,但是会省很多的事。

    LD_LIBRARY_PATH 这个环境变量是大家最为熟悉的,它告诉loader:在哪些目录中可以找到共享库。可以设置多个搜索目录,这些目录之间用冒号分隔开。在linux下,还提供了另外一种方式来完成同样的功能,你可以把这些目录加到/etc/ld.so.conf中,然后调用ldconfig。当然,这是系统范围内全局有效的,而环境变量只对当前shell有效。按照惯例,除非你用上述方式指明,loader是不会在当前目录下去找共享库的,正如shell不会在当前目前找可执行文件一样。

     

    展开全文
  • python在 linux上调.so文件

    万次阅读 2015-03-20 18:33:40
    前几天写一个项目要Python调用C++的.so文件,上网搜了一下,使用Python的ctypes模块  python官方文档:https://docs.python.org/2/library/ctypes.html?highlight=ctypes#module-ctypes 代码: from ctypes ...

      前几天写一个项目要用Python调用C++的.so文件,上网搜了一下,使用Python的ctypes模块

     python官方文档:https://docs.python.org/2/library/ctypes.html?highlight=ctypes#module-ctypes

    代码:

    from ctypes import *

    test = cdll.LoadLibrary(" ./certificate.so ")

    print test

    testpy = test.loadFile      //loadFile是C++函数

     ss = "/systemInfo.sys"      // 向 loadFile传的参数

    params = testpy(ss)

    print params

          运行脚本后,发现params是一堆乱码。调试之后,发现Python传到C++函数中的参数是乱码,也就是传的参数不对。到Python官方文档上查了一下,看了ctypes定义的原始C兼容数据类型. loadFile的参数类型是char*形式的,看了ctypes定义的数据类型后,“ss = "/systemInfo.sys"  ”换成” ss = c_char_p(" /systemInfo.sys ") “ ,运行后还是乱码,就耐着性子继续在官网上看,发现” It is possible to specify the required argument types of functions exported fromDLLs by setting theargtypes attribute.“ 可以通过设置argtypes的属性值来指定dll传到C中的参数。

    修改后的代码:

    from ctypes import *

    test = cdll.LoadLibrary(" ./certificate.so ")

    print test

    testpy = test.loadFile      //loadFile是C++函数

    testpy.argtype = c_char_p

     ss = "/systemInfo.sys"      // 向 loadFile传的参数

    params = testpy(ss)

    print params

           再一次运行后,参数能传正常了,但返回值params却是一个int值,很奇怪,以为是返回了对象的地址,查了一下不是。又看了一下文档,By default functions are assumed to return the Cint type. Otherreturn types can be specified by setting therestype attribute of thefunction object. 原来默认返回的是C中的int值,可以通过设置restype来设置返回值。

    修改后的代码:

    from ctypes import *

    test = cdll.LoadLibrary(" ./certificate.so ")

    print test

    testpy = test.loadFile      //loadFile是C++函数

    testpy.argtype = c_char_p                      //这里是testy.argtype而不是testy..argtypes

    testpy.restype = c_char_p

     ss = "/systemInfo.sys"      // 向 loadFile传的参数

    params = testpy(ss)

    print params

          运行一下,终于正确的返回string了。这里是testy.argtype而不是testy..argtypes,当参数多于2个时才用argtypes,例如:encodeFile.argtypes = [c_char_p, c_char_p]



        




    展开全文
  • linux编译so

    千次阅读 2018-03-29 08:50:54
    一、动态库so的编译 以一个例子来说明。 这里有三个so_test.h, test_a.c, test_b.c #ifndef _SO_TEST_H_ #define _SO_TEST_H_ void test_a(); void test_b(); void test_c(); #endif /* _SO_TEST_H_ */#include ...
  • Linux下找so文件的解决办法

    万次阅读 2016-03-11 16:39:27
    Linux下找so文件的解决办法
  • Linux下JNA 调用 so

    万次阅读 2012-10-16 15:53:31
    最近自己写的一个广告发布平台要迁移到Linux平台上,由于之前的是windows平台的dll文件,现在要改用.so。讲下如何在Linux下面调用.so。 在linux下使用jna调用本地方法的时候,需要将C写成的程序编译为so文件 1...
  • linux执行文件时找到.so

    千次阅读 2018-10-08 13:35:49
    在执行文件的时候提示找到.so,只需要: 1.打开下面的文件 sudo gedit /etc/ld.so.conf 2. 在打开的文件中添加你的.so文件所在的目录,添加完效果如下 include /etc/ld.so.conf.d/*.conf  /home/wxw/...
  • linux 加载so

    千次阅读 2019-05-15 22:17:47
    //RTLD_LAZY:在dlopen返回前,对于动态库中的没有定义的符号运行解析(仅仅对函数引用有效。对于变量引用总是马上解析)。 //RTLD_NOW: 须要在...//RTLD_GLOBAL:动态库中定义的符号可被其后打开的其他库解析...
  • Linux下生成.so文件

    千次阅读 2016-07-28 09:47:00
    linux下的.so文件即Shared Libraries。Shared Library 是程序运行时加载的库文件。当一个shared library 被成功的安装以后,之后启动的所有程序都会自动使用最新的shared library。也就是说,生成一个.so文件并告诉...
  • 原文见:http://www.trilithium.com/johan/2005/08/linux-gate/ 作者: Johan Petersson 当你在一个比较新的linux系统下使用ldd命令时,你会经常看到一个比较奇怪的文件名,即linux-gate.so.1: ldd /bin/sh ...
  • Linux下Java调用so文件

    万次阅读 2015-09-08 15:39:46
    Linux下Java调用C语言的so文件,需要进行System.loadLibrary("lib***.so"); 注意这里只需要写***,lib和so都不要。 出现java.lang.UnsatisfiedLinkError: no *** in java.library.path错误,可以 System.out....
  • Linux下动态库so查找与函数列表

    千次阅读 2018-05-01 16:33:42
    查看某个soLinux(Ubuntu)系统下的路径 ldconfig -p | grep libc.so.6 ldconfig -p | grep xxx.so 查看某个 so导出函数列表 # 如果输出符号T,则函数正常导出 # 如果输出符号U,则函数为定义 ...
  • linux 什么是SO文件

    万次阅读 多人点赞 2018-11-23 16:15:28
    牵扯到ELF格式,gcc编译选项待补,简单实用的说明一下,对Linux下的so文件有个实际性的认识。  1.so文件是什么?  2.怎么生成以及使用一个so动态库文件?  3.地址空间,以及线程安全.  4.库的初始化,解析:  5...
  • linux 安装JDK libjli.so 文件找

    千次阅读 2019-01-05 11:49:02
    liunx 安装JDK时 报出 java-error-while-loading-shared-libraries-libjli-so 或者没有找到该文件夹 yum install lrszs sz 下载 rz 上传 本人jdk echo $JAVA_HOME /usr/local/java/jdk1.8.0_181 echo $PATH...
  • Linux下动态加载SO文件

    万次阅读 2011-09-29 09:04:12
    动态库的显式调用 显式调用的含义是代码出现库文件名,用户需要自己去 打开和管理库文件。...⑵dlopen函数打开库文件,并指定打开方式 dllope的的第一个参数为共享库的名称,将会在下面位置查找指定的共享库。
  • Linux so库查看工具

    千次阅读 2016-08-18 09:45:50
    反汇编soLinux工具
  • Linux下的.so文件编写

    千次阅读 2017-08-19 11:33:59
    Linux下的.so是基于linux下的动态链接,其功能和作用类似与windows下.dll文件。 下面是关于.so的介绍: 一、引言 通常情况下,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件...
  • Linux可执行文件目录下明明存在*.so文件,但却提示找到 加载机制的问题 在Linux上,动态库的加载机制和在Windows上完全一样(其实应该叫做【共享库】才对,动态库是Windows的概念,Windows上为*.dll,Linux上为*...
  • linux平台java调用so动态库

    千次阅读 2017-03-21 18:00:18
    实现将一个自己编写的Hello.c文件打包成libHello.so动态库,并通过gcc编译工具实现一个test.c程序调用libHello.so和自定义头文件Hello.h的过程。 具体程序代码如下: //Hello.h文件 include void print...
  • Linux动态链接库 so文件的创建与使用

    千次阅读 2019-02-17 13:45:02
    Linux动态链接库 so文件的创建与使用
  • 与windows的动态链接库dll类似,linux下的so类文件扮演同样的角色。但时不时的就会遇到类似cannotopenshareobject:libgtk-x11.so的错误提示。通常出现这种错误的原因都不是文件系统上没有这个文件,而是通过系统的so...
  • linux 应用程序application中动态加载 libA.so, 而libA.so调用了libB.so中的函数funcB();application运行时出现undefined symbol: funcBldd -r application,发现确实没有加载动态链接库libB.so-lB编译选项,...
  • CentOS]安装软件:/lib/ld-linux.so.2: bad ELF interpreter解决   环境: [orangle@localhost Downloads]$ uname -m&&uname -r x86_64 2.6.32-220.el6.x86_64 [orangle@localhost Downloads]$ cat /etc/redhat-...
  • 如有编译时依赖较多的情况,很容易出现找到.so文件的错误。 这类错误的常见提示类型: //usr/lib/x86_64-linux-gnu/libSM.so.6: undefined reference touuid_generate@UUID_1.0' /usr/bin/ld: cannot fi...
  • linux的可执行程序运行时找so文件(编译时可以), ldd可以查看依赖关系,  linux在程序运行前就会把依赖关系解决, 具体有以下四种方法 ld.so.conf : 配置方式 /lib, /usr/lib: 默认的搜索路径 gcc ...
  • linux 显式链接so

    千次阅读 2018-06-08 10:49:56
    动态库依赖越多, 进程启动就越慢, 并且发布程序的时候, 这些链接但没有使用的so同样要一起跟着发布, 否则进程启动时候找到对应的so导致启动失败. 一些查看依赖的命令 查看依赖关系: readelf -d xx.so 查看链...
  • 编译命令 解决办法: -L. -l库名 要放到.c之后 ...折腾了一个晚上,网上找了半天,才在一个评论里找到的,往其他新手少走弯路 ...另外可以nm工具查看.so .o文件的符号表 要导出的函数名 ...
  • Linux平台Java调用so库-JNI使用例子

    千次阅读 2017-04-07 15:45:02
    我是有在Linux和windows平台都了JNI,在这里简单分享以下在Linxu平台上开发了JNI的简单步骤和小demo。楼主亲测可用,要是有不对的地方,欢迎指正! 之前写了一遍windows平台上一个demo Linux 平台上的项目...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 281,275
精华内容 112,510
关键字:

linux不能打开so

linux 订阅