问题发现:

$
g++ -Wall -o hellobrowser.exec hellobrowser.c -I/usr/local/include
-L/usr/local/lib -lmicrohttpd -ldl

$
./hellobrowser.exec

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

$
whereis libmicrohttpd

发现/usr/local/lib下有这个库

$
cd /usr/local/lib

$
find libmicrohttpd.so.10

的确有这个文件。

这是因为动态库默认只会在/usr/lib下找。不会去/usr/local/lib找。


解决方法:

法1:sudo
vi /etc/ld.so.conf

添加一行:

/usr/local/lib

然后sudo
ldconfig使得生效。这样动态库就会去/usr/local/lib找了。

法2:

g++ -Wall -o hellobrowser.exec hellobrowser.c -I/usr/local/include -L/usr/local/lib -lmicrohttpd -ldl -Wl,-R /usr/local/lib

法3:
$ ln -s /usr/local/lib/libmicrohttpd.so.10 /usr/lib/libmicrohttpd.so.10
# ln -s /usr/local/lib/libmicrohttpd.so /usr/lib/libmicrohttpd.so

推荐法1和法2.


分析解释:

默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件。

虽然g++
-L/usr/local/lib虽然能让链接器找到库进行链接,但是运行时链接器却找不到这个库,如果要让软件运行时库文件的路径也得到扩展,那么我们需要增加这个库路径加上-Wl,-R,即添加g++参数“-Wl,-R
动态库库路径”。

或者修改系统文件/etc/ld.so.conf,这个文件记录了编译时使用的动态链接库的路径。

g++编译后运行时无法链接动态库的解决方法相关推荐

  1. linux直接运行程序加载动态库失败,扣丁学堂Linux培训详解程序运行时加载动态库失败解决方法...

    今天扣丁学堂Linux培训老师给大家介绍一下关于Linux程序运行时加载动态库失败的解决方法,希望对同学们学习有所帮助,下面我们一起来看一下吧. Linux下不能加载动态库问题 当出现下边异常情况 . ...

  2. Linux系统程序运行时加载动态库路径顺序

    程序运行时加载动态库路径顺序(Linux) 在linux系统中,如果程序需要加载动态库,它会按照一定的顺序(优先级)去查找: 链接时路径(Link-time path)和运行时路径(Run-time ...

  3. 搭建完菜单后运行不显示菜单的原因及其解决方法(拼图小游戏)

    文章目录 一.前言 二.问题描述 三.原因分析 1.代码分析 2.执行分析 3.核心原因(总结) 四.解决方案 五.正确代码演示 六.涉及知识点 七.结语 一.前言 本文将讲述了一个在搭建菜单以后运行 ...

  4. asp+Access程序在Windows Server 2003 Enterprise Edition服务器上运行时无法显示备注字段的解决方法...

    最近公司让软件公司开发了一个网站,使用asp+Access,可是软件公司上传到服务器上后页面无法显示数据库中的备注字段的内容,给软件公司打电话,那边的开发人员说: 问题:服务器上asp无法直接显示Ac ...

  5. VS2017运行时控制台一闪即逝解决方法

    2 选择系统 3 右侧小三角下拉菜单选控制台

  6. 练习编程的过程中,运行时出现黑框一闪而过的解决方法

    1.方法一:添加头文件#include"conio.h",并在return0:前面添加getch();语句 2.方法二:如果新建的是c++文件,则可以末尾的return语句前加上s ...

  7. Makefile 编译动态库文件及链接动态库

    原文转自 :http://www.cnblogs.com/ljtknowns/p/5647793.html 文件目录结构如下 1 dynamiclibapp.c 2 Makefile 3 comm/i ...

  8. 动态库、静态库编译测试:含静态库链接动态库、静态库,动态库链接静态库、动态库

    本文的目的是测试各种类型库的编译后的使用效果,包括库又链接其他库的编译方法,使用方法,依赖性等. 太长不看版:请跳至文章最后的总结对比表. 一.内容包含: ①静态库libbb.a依赖静态库libaa. ...

  9. java运行时_java编译时与运行时概念与实例详解

    Java编译时与运行时很重要的概念,但是一直没有明晰,这次专门博客写明白概念. 基础概念 编译时 编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码.(当然只 ...

最新文章

  1. iPhone开发环境搭建全过程 iPhone手机开发内容,中文手册
  2. CheckStyle
  3. halcon深度学习算子,持续更新
  4. java程序可分为两个基本文件_1 Java语言概述答案
  5. Android之SurfaceView
  6. Java虚拟机(十)——直接内存概述
  7. 像目标主机一样的tcp流重组
  8. 面试了上百位性能测试后,我发现了一个令人不安的事实
  9. 电信移动联通广电喜提5G牌照,5G手机明年爆发
  10. linux read函数段错误,linux C++ 莫名奇异的段错误(segmentation fault),无法调用其他函数...
  11. Theano入门神经网络(三)
  12. 第三章 栈和队列(含答案)
  13. 异或鉴相器 matlab 数字鉴相器,CPLD的光伏逆变器锁相及保护电路设计
  14. java 运行配置_JAVA运行环境配置
  15. 实时频谱分析仪作下变频器的技术实现
  16. mongo E11000 duplicate key error collection
  17. yarn unlink 简单使用
  18. vue的页码组件的页码重置为1
  19. 华为Freebuds Pro 2开启智能高清L2HC后音质差,试试LDAC~
  20. 一劳永逸的使用最新nodejs开发环境

热门文章

  1. Cache 工作原理、Cache 一致性,你想知道的都在这里
  2. 皮一皮:这是仙女用的嘛?
  3. Spring Boot如何实现在线预览?这个开源项目可以学习一下,支持99%常用文件!...
  4. 一种思路:策略模式 + 反射工厂,很好的实现了开闭原则
  5. 经典游戏大合集,你的青春也许就在里面!
  6. 自律到极致-人生才精致:第2期
  7. 【译】Spring Boot 2.0 官方迁移指南
  8. Springboot集成websocket实例
  9. 处理点云数据 点云与生成前视图
  10. cmake 头文件 库文件