• linux g++ 查找动态链接库


     

    运行时动态库 not found。即使在使用-L和-l参数使得成功编译,在运行时仍然可能会找不到库,因为运行时库的搜索路径可能并没有包含-L的目录。

    第一种方法:找到缺少的动态库(由于编译和链接时候的使用到了这个动态库,所以很容易找得到),将其加到/lib,/usr/lib中的一个文件夹下,这几个文件夹是系统默认的搜索路径。将库文件放置在其中,运行时就可以搜索到了( /lib  /usr/lib )。

    第二种方法:设置临时增加链接动态库的路径;export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:[your lib]

    第三种方法:/etc/ld.so.cache中缓存了动态库路径,可以通过修改配置文件/etc/ld.so.conf中指定的动态库搜索路径,然后执行ldconfig命令来改变。

    第四种方法:在链接时语句后面添加如下命令:-Wl,-rpath=[your lib] 。其中-WI是gcc参数,-rpath是ld参数

    优先级:4>2>3>1

    补充:

    今天遇到一个问题,用g++5.5版本编译不通过,但是用g++4.8版本编译就通过了。调查下来依旧没有答案,猜测是有一些依赖的.so库使用g++4.8版本编译出来的,导致5.5版本下不通过。

    为了保险起见,自己编译的库文件最好使用统一的g++版本。

    g++和gcc区别

    gcc是GCC中的GUN C Compiler(C 编译器)

    g++是GCC中的GUN C++ Compiler(C++编译器)

    GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C等语言。

    gcc和g++的主要区别

    1. 对于 *.c和*.cpp文件,gcc分别当做c和cpp文件编译(c和cpp的语法强度是不一样的)

    2. 对于 *.c和*.cpp文件,g++则统一当做cpp文件编译

    3. 使用g++编译文件时,g++会自动链接标准库STL,而gcc不会自动链接STL

    4. gcc在编译C文件时,可使用的预定义宏是比较少的

    5. gcc在编译cpp文件时/g++在编译c文件和cpp文件时(这时候gcc和g++调用的都是cpp文件的编译器),会加入一些额外的宏。

    6.在用gcc编译c++文件时,为了能够使用STL,需要加参数 –lstdc++ ,但这并不代表 gcc –lstdc++ 和 g++等价,它们的区别不仅仅是这个。

  • 相关阅读:
    初识python: random 模块
    初识python: 模块定义及调用
    JSON的stringify和parse方法
    微信小程序:日期组件picker的使用
    微信小程序:给data中对象中的属性设置值与给data中的属性或对象或数组设置值的区别
    微信小程序:点击预览大图功能
    微信小程序:解决小程序中有些格式如webpiPhone手机暂不支持的问题
    微信小程序:优化页面要渲染的属性
    微信小程序:标签字符串直接变成标签来显示要通过富文本技术
    微信小程序:添加全局的正在加载中图标效果
  • 原文地址:https://www.cnblogs.com/starRebel/p/14097465.html
Copyright © 2020-2023  润新知