• .o ----是目标文件,相当于windows中的.obj文件,一个.c或.cpp文件对应一个.o文件(一般由.c文件通过gcc编译过来)。 .a ----是静态库,由多个.o组成在一起,用于静态连接。 .so ----shared object,为共享库,是...



    .o  ----是目标文件,相当于windows中的.obj文件,一个.c或.cpp文件对应一个.o文件(一般由.c文件通过gcc编译过来)。

    .a  ----是静态库,由多个.o组成在一起,用于静态连接。

    .so ----shared object,为共享库,是用户层的动态库,用于动态连接的,和dll差不多,使用时才载入。使用同一个.so的程序在运行时只需要该.so的同一份拷贝。

    .ko ---- kernel object,内核模块,是Linux 2.6内核使用的动态连接文件的后缀名,也就是模块文件,用来在Linux系统启动时加载内核模块,如果编译安装了模块,还会在/lib/modules中增加一个以新内核版本为名字的目录,新的模块文件就放在里面。

    .la 为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息。



    【参考文章】

    Linux系统下面: .o .a .so .ko .la区别:

    http://blog.csdn.net/xushaozhang/article/details/52588293

    Linux中的动态库和静态库(.a/.la/.so/.o):

    http://www.cnblogs.com/findumars/p/5421910.html

    C++静态库与动态库:

    http://blog.jobbole.com/86852/


    展开全文
  • 由于缺少对libc.so的认识,以为跟普通的lib包类似,直接把高版本的so软连过去就可以满足安装和升级,造成错误操作直接导致Linux系统崩溃。 错误操作: 在root用户下将/usr/lib/libc.so.6的覆盖,导致系统瘫痪,...

    问题

    由于缺少对libc.so的认识,以为跟普通的lib包类似,直接把高版本的so软连过去就可以满足安装和升级,造成错误操作直接导致Linux系统崩溃。

    错误操作:

    在root用户下将/usr/lib/libc.so.6的覆盖,导致系统瘫痪,所有用户均被强制退出。

    如下示例:

    # root 用户
    cp libc-2.12.1.so /usr/lib/libc.so.6

    分析

    后来查询资料发现,libc.so是软连接到在Linux系统中基本的命令如ls, cp等均依赖该so,其重要性不言而喻。如果不慎删除,重定向,覆盖,都会导致不同程度的异常。而libc.so.6是软连接到具体的版本的libc.so, 如libc-2.17.so

    轻微异常:基本命令无法使用,出现错误

    error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

    严重异常:所有用户被强制退出,系统崩溃

    服务器崩溃

    解决方法

    解决思路:2步

    1. 首先删除软连接libc.so.6。不同类型的Linux系统该libc的位置不同,我使用的服务器在/usr/lib//usr/lib64下均存在libc.so.6
    2. 根据系统实际的libc.so,再添加libc.so.6的软连接。

    轻微异常

    该异常尽管基本命名无法使用,但是root用户还在,所以定位到libc.so.6之后可以根据解决思路简单实现。示例如下:

    # 假设 /usr/lib/下的libc.so.6的软连接错误的软连到libc.2.17.so, 系统支持的是libc.2.12.1.so
    
    # 现在忘记rm是否可以使用了,如果rm不能使用,则使用 LD_PRELOAD=/lib64/libc-2.12.1.so rm
    rm libc.so.6
    LD_PRELOAD=/lib64/libc-2.12.1.so ln -s libc-2.12.1.so libc.so.6

    系统崩溃

    此时系统已经崩溃,无法再登录进行操作,我们的做法是通过U盘进行登录(U盘存在一个系统),尝试修复系统。使用U盘登录后,原来的系统可以当场文件直接操作,实现解决思路。

    rm libc.so.6
    LD_PRELOAD=/lib64/libc-2.12.1.so ln -s libc-2.12.1.so libc.so.6

    总结

    在修改系统中的so时要非常小心,如果牵扯到系统的底层基础,一定要对so的职能做到简单的了解。

    参考文献

    https://www.linuxidc.com/Linux/2017-02/140994.htm

    展开全文
  • 在开发openwrt时,编译内核的时候,自己写的代码在openwrt 编译报错,提示缺少依赖库文件 Package Gateway_Auto is missing dependencies for the following libraries: libc.so.6 libm.so.6 libpthread.so.0 ...

    在开发openwrt时,编译内核的时候,自己写的代码在openwrt 编译报错,提示缺少依赖库文件

    Package Gateway_Auto is missing dependencies for the following libraries:
    libc.so.6
    libm.so.6
    libpthread.so.0
     

    libc.so.6 libm.so.6 libpthread.so.0

     

    glibc是linux上对标准库的实现,包含libc.so,libm.so,libpthread.so等库文件和头文件

     

    解决方法,进入openwrt的更目录,然

    cd staging_dir/target-mips_24kc_musl/pkginfo/ 目录下

    对libc.provides这个文件进行修改

     

     

    在进行make menuconfig 选择相应的组件,在make V=s

    就可以编译通过了

    展开全文
  • 看了一位大神的方案,然后试了下就成功... $ cd / $ find -name libgmp.so.* $ ls -l ./usr/lib/x86_64-linux-gnu/libgmp.so* $ cd ./usr/lib/x86_64-linux-gnu/ $ ls -l libgmp.so.* $ ln -s libgmp.so.10.0.2 lib

    看了一位大神的方案,然后试了下就成功了 传送门:点击打开链接

    $ cd /

    $ find -name libgmp.so.*

    $ ls -l  ./usr/lib/x86_64-linux-gnu/libgmp.so*

    $ cd ./usr/lib/x86_64-linux-gnu/

    $ ls -l  libgmp.so.*

    $ ln -s libgmp.so.10.0.2 libgmp.so.3

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间

    展开全文
  • 查找电脑本地是否有该库文件。 首先查找是否有对应的库文件 .../usr/lib/gcc/x86_64-linux-gnu/7/32/libgcc_s.so /usr/lib/gcc/x86_64-linux-gnu/7/libgcc_s.so /usr/lib/gcc/x86_64-linux-gnu/7/x32/li...
    查找电脑本地是否有该库文件。

    首先查找是否有对应的库文件

    sudo find /usr/ -name libgcc_s.so
    

    结果如下所示

    /usr/lib/gcc/x86_64-linux-gnu/7/32/libgcc_s.so
    /usr/lib/gcc/x86_64-linux-gnu/7/libgcc_s.so
    /usr/lib/gcc/x86_64-linux-gnu/7/x32/libgcc_s.so
    /usr/lib/gcc/x86_64-linux-gnu/3.4.6/32/libgcc_s.so
    */usr/lib/gcc/x86_64-linux-gnu/3.4.6/libgcc_s.so*
    /usr/lib/x86_64-linux-gnu/libgcc_s.so
    

    以上说明在本地电脑上有该文件。则下面的步骤是添加搜索路径。

    下载安装指定依赖库
    sudo apt-get install apt-file
    apt-file update
    apt-file search libjpeg.so.8 
    sudo apt-get install libjpeg-turbo8:i386
    

    注意对于32位的cjpeg程序,需要安装32位的libjpeg-turbo8,其中i386指定了软件包为32位。

    展开全文
  • 交叉编译 libjpeg.so.62

    2011-11-27 17:22:34
    一、先添加库libjpeg.so for arm: 交叉编译libjpeg 交叉编译工具 版本:3.4.1  路径:/usr/local/arm/3.4.1/bin 编译libjpeg前要确保系统装了libtool库。否则编译不成功。 1、下载libjpeg...
  • familia编译时报错:缺少libpython3.6m.so.1.0 方法1:去别的环境下找下有没 libpython3.6m.so.1.0,导过来加到共享库路径LD_LIBRARY_PATH,python版本需一样 方法2:自己重新动态编译Python环境 ./configure --...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 如果使用自己手动生成的动态链接库.so文件,但是这个.so文件,没有加入库文件搜索路劲中,程序运行时可能会出现找不到动态链接库的情形。 可以通过ldd命名来查看可执行文件依赖的动态链接库,如下(其中D为可执行...
  • 网上查了一下,ld-linux.so.3大概是linux下进行动态库连接的连接器,用于新一代elf格式的可执行文件。因此,推测自己搭建的目标平台下缺少该库,于是到一下网址:...
  • /opt/FriendlyARM/toolschain/4.4.3/libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1:  error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory 今天装...
  • OpenFOAM用wmake编译applications/test里的文件时缺少libmpi.so.1的解决办法
  • 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)  curl库是一个很强大的http开源库,... 在windows下还是很容易使用,如何使用的案例比比皆是,而且很容易就找到已经编译好的动态库进行测试,但是最后
  • 编译安装完Apache之后发现modules目录下没有libphp5.so 解决方法:如果你在编译安装Apache时候用了--enable-so 但是也没有libphp5.so 的支持模块, 说明 在安装php程序的时候 编译参数有问题 没有添加./configure --...
  • 首先需要安装好eclipse 的cdt编译的环境。配置好gcc 编译环境。lunix 一般情况下都会有gcc ,windows就需要装个cygwin。 一、建立一个动态连库(.so文件) 1、先在eclipse中创建一个共享库工程 File->New->...
  • 近期在给linux漏洞扫描和配置核查,在升级openssh过程中,执行rpm -e gcc --nodeps和rpm - e zlib -- nodeps后,rpm和yum命令都无法正常使用。报error while loading shared libraries: libz.so.1: cannot open ...
  • 编译rtmpdump和librtmp之后提示rtmpdump找不到librtmp, 很纳闷,建立软连接不行,把库库拷贝到执行程序的目录也找不到,加环境变量也不行。 解决方法一、把库直接拷贝到/usr/lib/ 下面去,简单暴力。 解决方法二、在...
  • Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so
  • 下文翻译自http://forums.devshed.com/apache-development-15/in-modules-directory-i-have-only-httpd-exp-and-so-286713.html...in modules directory i have only httpd.exp and so files? hello all, im tryi
1 2 3 4 5 ... 20
收藏数 15,627
精华内容 6,250
关键字:

.so linux 编译 缺少