编译找不到库文件

在linux环境编译应用程式或lib的source code时常常会出现如下的错误讯息:

/usr/bin/ld: cannot find -lxxx

这些讯息会随着编译不同类型的source code 而有不同的结果出来如:

/usr/bin/ld: cannot find -lc

/usr/bin/ld: cannot find -lltdl

/usr/bin/ld: cannot find -lXtst

其中xxx即表示函式库文件名称,如上例的:libc.so、libltdl.so、libXtst.so。

其命名规则是:lib+库名(即xxx)+.so。

会发生这样的原因有以下三种情形:

1 系统没有安装相对应的lib

2 相对应的lib版本不对

3 lib(.so档)的symbolic link 不正确,没有连结到正确的函式库文件(.so)

如果在/usr/lib的目录下找不到libXtst.so 档,那么就表示系统没有安装libXtst的函式库。

解法如下:

apt-get install libxtst-dev

解决/usr/lib/ld: cannot find -lc:
1. 在系统中搜索 libc.so 文件。搜索出一个无效的链接,删除;还有一个
libc.so.6 ,在/usr/lib/i386-linux-gnu下面。
2. 进入usr/lib目录:cd
/usr/lib
3.建立链接:sudo ln -sv /lib/i386-linux-gnu/libc.so.6
libc.so

解决/usr/lib/ld: cannot find -lm:
1. 在系统中搜索 libm.so 文件。搜索出一个 libm.so
,在/usr/lib/i386-linux-gnu下面。
2. 进入usr/lib目录:cd /usr/lib
3.建立链接:sudo
ln -sv /usr/lib/i386-linux-gnu/libm.so libm.so

但是深究该问题应该是该库的头文件库没有安装所致:

[[email protected] lib]# yum list all | grep ltdl libtool-ltdl.i386                       1.5.22-7.el5_4              installed   libtool-ltdl-devel.i386                 1.5.22-7.el5_4              CentOs5.5-32

安装头文件:

[[email protected] lib]# yum -y install libtool-ltdl-devel.i386

。。。

查看后发现该错误确实是由devel头文件未安装所致。

[[email protected] lib]# rpm -ql libtool-ltdl-devel.i386 /usr/include/ltdl.h /usr/lib/libltdl.a /usr/lib/libltdl.la /usr/lib/libltdl.so

编译找不到库文件

时间: 2024-10-25 20:56:45

编译找不到库文件的相关文章

FFmpeg编译找不到库文件

在编译FFmpeg的时候,用./configure 进行配置,经常会出现找不到库文件的情况,原因大概就两个: 1.没有安装库文件或者安装的库文件版本不对 2.FFmpeg没有找到库文件 前者的问题好解决,只要安装相应的库就好了,但是安装好相应的库以后,一般还会掉入后者那个坑. 后者要解决也很简单,只要告诉FFmpeg你的库目录就好,怎么告诉它? 在./configure 配置的时候,有几个参数 --extra-cflags --extra-ldflags --extra-cxxflags 这几个

修改OpenSSL默认编译出的动态库文件名称

在 Windows 平台上调用动态链接库 dll 文件时,有两种方式:a) 隐式的加载时链接:使用 *.lib (导入库)文件,在 IDE 的链接器相关设置中加入导入库 lib 文件的名称,或在程序中加入预编译指令 #pragma comment (lib,”*.lib”).b) 显式的运行时链接.不使用 *.lib (导入库)文件,使用 Load Library(),GetProcAddress() 函数来加载动态库中的函数.要注意的是在导入库 lib 文件内部包含了其对应 dll 文件的名称

登录mysqlpxc报错找不到库文件libreadline.so.7

一.环境说明: 本博文的演示环境和上篇博文一致https://blog.51cto.com/wujianwei/2374588 1.1简述: 基于上篇博文,为了部署mysqlpxc集群环境,需要开启3个vmware虚拟机实例来部署3个mysqlpxc实例.第一篇博文中在初始化mysqlpxc实例后,登录实例时,报错提示: [[email protected] local]# /usr/local/mysqlpxc/bin/mysql -uroot -p mysql: error while lo

linux编译链接找不到库文件的解决方法。

今天编译出现ld: 0706-006 Cannot find or open library file: -l xerces-c_static,ld:open(): A file or directory in the path name does not exist.这个熟悉得不能再 熟悉的链接错误. 很简单,编译器打开xerces-c_static.a失败.出现这个错误的原因往往是因为目录库文件xerces-c_static.a没被编译出来或不存在. 于是第一反应,看一下xerces-c_s

关于找不到库文件

系统:centos 6.3 有时我们执行某个程序时出现缺少库文件的报错,如下: error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory 遇到这种情况不要慌,用 ldd 命令查看程序的依赖库,看看哪些库是程序没有找到的(ldd 命令最好后面跟自己熟悉的文件,不要去看不熟悉的陌生程序依赖库,很可能会被黑客利用) 一般都是这种输出格式

bundle install 找不到库文件,用 config 参数指定本地类库

在 FreeBSD Jail 中安装 Gitlab,执行 bundle install 时,有个类库文件找不到,最后修改 config 文件顺利通过. 出现的错误: Building nokogiri using packaged libraries. ----- libiconv is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dep

安装sysbench遇到找不到库文件的问题

export LD_LIBRARY_PATH=/usr/mysql/lib./configure --prefix=/usr/local/sysbench --with-mysql-includes=/data/eh/mysql/include/ \ --with-mysql-libs=/data/eh/mysql/lib/ --with-mysql=/data/eh/mysql

VS编译后直接复制DLL库文件到其他目录下

项目目录:SourceCode\公共组件\KApiClient\ 要复制的目的目录: SourceCode\公共组件\DllLibrary\ApiClient 则在项目 KApiClient下添加如下: Set OD="$(ProjectDir)..\DllLibrary\ApiClient" attrib "%OD%\$(TargetName).*" -r -a -s -h copy $(TargetName).* "%OD%" 原文地址:ht

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

本文为原创文章,转载请指明该文链接 文件目录结构如下 1 dynamiclibapp.c 2 Makefile 3 comm/inc/apue.h 4 comm/errorhandle.c 5 dynamiclib/Makefile 6 dynamiclib/dynamiclib_add.c 7 dynamiclib/dynamiclib_mul.c 8 dynamiclib/inc/dynamiclibs.h 9 dynamiclib/libs/ 1. dynamiclib目录 dynamic