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_static.a文件有没有存在,发现文件是已经存在的。接着检查makefile,库目录也设置正确。反正clean编译了几次,问题依旧,突然想到,打开

文件失败,并不一定是不存在,也可能是用户权限不够。于是赶紧查看了一下,果然发现用户没有xerces-c_static.a文件的read权限。这个工程以外的库,之前我直接用root用户在

其它目录拷贝过来的,导致用户权限不足,在编译的时候,打不开相应的.a文件,修改了xerces-c_static.a文件后,问题解决。一个小小的复制运作,很有可能就是bug的关键,细节

决定成败,在coding中尤其重要。扯远了,把问题记录下来,希望可以给自己一个教训,也希望能帮助到其他人。

时间: 2024-08-07 11:54:58

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

编译安装时yum没有库文件的解决方法

centos 5/6 epel yum源安装 在centos6.x 上编译安装php时,如果指定编译参数  --wity-mcrypt  会需要安装 libmcrypt-devel这个包才可以.但是当使用yum install  libmcrypt-devel 的时候,会提示无这个包.这是因为centos6.x 默认的yum源不在包含这个资源.需要第三方资源. 首先现在如下rpm包,然后安装对应的rpm包centos5 32位epel源下载地址: www.lishiming.net/data/a

安卓ndk开发——找不到so文件的解决方法

看下日志,报了一个错误,大致原因是找不到so文件.该错误是在模拟器中运行产生的,真机运行并不会出现. 经询问,该原因是我启动的模拟器是x86结构的,涉及到底层的东西需要使用arm结构的模拟器,所以不是程序出了问题,而是模拟器的问题,新建一个arm结构的模拟器就不会报该错误了.然而在windows下启动一个arm结构的模拟器需要花费很长时间,所以现实中涉及到这方面的东西,还是使用真机吧,当然还有另一种选择,使用linux进行开发吧,在linux下模拟器的启动速度大大加快了,由于自己电脑是windo

编译找不到库文件

在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.lib

FFmpeg编译找不到库文件

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

linux找不到动态链接库 .so文件的解决方法

如果使用自己手动生成的动态链接库.so文件,但是这个.so文件,没有加入库文件搜索路劲中,程序运行时可能会出现找不到动态链接库的情形. 可以通过ldd命名来查看可执行文件依赖的动态链接库,如下(其中D为可执行程序): 其中的libjson_linux-gcc-4.6_libmt.so cannot found. 解决这个问题: (1)在系统中查找这个文件(当然要保证系统中已经有这个.so文件,只是查找路径没有设置正确而已): sudo find / -name libjson_linux-gcc

登录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

Xcode编译WebApps找不到js的错误解决办法<转>

使用Xcode做WebApps时,使用UIWebview来调用一个页面,有时会遇到问题,其一就是编译的时候出现黄色感叹号的Warning,js文件都报错:warning: no rule to process file '$(PROJECT_DIR)/jquery-1.8.1.min.js' of type sourcecode.javascript for architecture i386 错误原因是:js和html等资源文件加入到project的时候,Xcode错误的将js文件都放到了编译

Visual Studio中根据系统区分引用64位、32位DLL动态库文件的配置方法

原来使用Win7的32位系统,进行C#工程的开发,后来重装系统,换成了win7的64位系统 调试原来的工程,由于在其中引用了"SQLite"的32位的dll,导致在64为位下程序无法运行(但是编译可以通过) 后来通过修改工程文件(.csproj),在其中设置引用的条件,解决了问题 打开引用了SQLite的工程(例如叫做info)的工程文件(info.csproj),找到对SQLite引用的语句,类似如下的代码 代码如下: <Reference Include="Syst

linux使用su切换用户提示 Authentication failure的解决方法&amp; 复制文件时,报cp: omitting directory `XXX&#39;

linux使用su切换用户提示 Authentication failure的解决方法:这个问题产生的原因是由于ubtun系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在终端中输入如下命令: sudo passwd Password:你当前的密码 Enter new UNIX password:这个是root的密码Retype new UNIX password:重复root的密码然后会提示成功的信息. 在说明一点,使用su和sudo是有区别的,使用su切换用户需要