美文网首页视频编码学习之路
编译小tips——安装库的问题

编译小tips——安装库的问题

作者: 团不慌 | 来源:发表于2018-02-24 19:42 被阅读18次

    遇到了两个小小的问题,但不好找到思路,这里记录一下。


    问题一 强制静态链接或强制动态链接

    在默认情况下,如果同时存在 lib.so 和 lib.a ,则将采取动态链接,那么如何强制某一种链接呢?

    这里要用到GCC和LD编译过程的命令,假设我们有libA需要静态链接,libB需要动态链接,另有一个libC,我们可以使用如下命令:

    gcc ... -Wl,-Bstatic -lA -Wl,-Bdynamic -lB ... -lC

    按照指定-B即可确定链接方式,但问题来了:libC将采取与他最近的链接方式强制进行。这就很不好了...所以最好的办法还是分别进行连接,比如在LDFLAGS中进行区别。

    参考知乎:在Linux下,如何强制让GCC静态链接?

    问题二 程序运行时动态库加载失败

    新安装的动态库总是不能被立即找到,比较有经验的同学可能会试用一下 ldconfig 命令,但这个命令 默认只关心系统目录下的库,所以在我们自己编译安装的库更新时需要对 ldconfig 配置进行一下更改:

    使用命令
    # cat /etc/ld.so.conf
    include ld.so.conf.d/*.conf
    # echo "/usr/local/lib" >> /etc/ld.so.conf
    # ldconfig

    直接更改
    进入/etc/ld.so.conf
    加入/usr/local/lib
    执行ldconfig

    当然上面只是在安装的库在/usr/local/lib(用户默认安装路径)下的情况,可以按照自己的实际情况进行更改。

    不只是在新安装库之后使用,其实在每一次更新库之后都ldconfig一下会比较好。

    参考博客:关于程序运行时加载动态库失败的解决方法

    相关文章

      网友评论

        本文标题:编译小tips——安装库的问题

        本文链接:https://www.haomeiwen.com/subject/dfscxftx.html