美文网首页视频编码学习之路
编译小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——安装库的问题

    遇到了两个小小的问题,但不好找到思路,这里记录一下。 问题一 强制静态链接或强制动态链接 在默认情况下,如果同时存...

  • CentOS 6.9 升级 Python 到 2.7.13 以及

    下载 Python 2.7.13 源码 安装编译依赖包 编译安装 解决 yum 使用以及静态库共享问题 安装 pi...

  • lnmp环境搭建

    安装依赖库 安装nginx 安装Mysql 安装PHP依赖库 编译安装PHP库 编译PHP 7.2 复制php配置...

  • 第二章 编译openwrt源码

    编译openwrt最大的问题,翻墙,库安装不全,导致报错,1.库安装,库安装其实我也是去看别人的文章,然后,遇到没...

  • libiconv 未定义的引用解决

    最近在安装libconfig库时,编译期间出现找不到libiconv库的问题/usr/local/lib/../l...

  • memcached管理

    tips memcached 可以集群,多个机器的内存作为一整块内存 安装 编译libevent-devel编译m...

  • ubuntu16.04 安装ZMQ

    1.安装依赖 2.编译安装ZMQ使用的加密库 3.编译安装ZMQ核心库 4.编译安装ZMQ的C绑定 5.添加ZMQ...

  • Android 7.1编译CTS

    编译环境 Linux:Debian 7.8 有点老JDK: 1.8 准备 安装必需的库和工具 如果编译中间出现问题...

  • ubuntu下编译ffmpeg

    安装依赖 安装依赖库 编译ffmpeg

  • nginx 编译安装支持 ssl

    nginx 编译安装支持 ssl [toc] 标签(空格分隔): nginx 安装编译环境和必要的库 编译安装pc...

网友评论

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

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