有时候通过linux编译安装一些程序会有类似这样的错误提示:
写道
yunpeng@yunpeng-duitang:/duitang/dist/sys/zookeeper-3.4.5/src/c$ cli_mt localhost:2181
cli_mt: error while loading shared libraries: libzookeeper_mt.so.2: cannot open shared object file: No such file or directory
cli_mt: error while loading shared libraries: libzookeeper_mt.so.2: cannot open shared object file: No such file or directory
通过ldd命令可以分析程序依赖的so
写道
yunpeng@yunpeng-duitang:/duitang/dist/sys/zookeeper-3.4.5/src/c$ ldd /usr/local/bin/cli_mt
linux-vdso.so.1 => (0x00007fff40fff000)
libzookeeper_mt.so.2 => /usr/local/lib/libzookeeper_mt.so.2 (0x00007fc1255d7000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc1253a8000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc125008000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc124d84000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc1257f4000)
linux-vdso.so.1 => (0x00007fff40fff000)
libzookeeper_mt.so.2 => /usr/local/lib/libzookeeper_mt.so.2 (0x00007fc1255d7000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc1253a8000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc125008000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc124d84000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc1257f4000)
linux 开发环境推荐的搭建方式.
可以在自己的home目录里(快捷方式:运行push ~ 或cd ~ 或 cd即可),分别建立bin lib目录.
然后 vim .bashrc
#在文件尾部 将bin lib 两个目录设置到这两个环境变量里来.
#. 注意这里一定是export. 不然不生效的.
- export PATH=.:$HOME/bin:$PATH
- export LD_LIBRARY_PATH=.:$HOME/lib:$LD_LIBRARY_PATH
#. 然后重启动shell 或者
. .bashrc 或者
source .bashrc 即可 重新设置环境变量.
#. 检查一下: echo $LD_LIBRARY_PATH 有值 就说明OK了.
相关推荐
在您的情况下,您遇到了与`libpcre.so.0`相关的依赖问题,这通常发生在尝试运行或安装某个软件时,系统找不到这个特定版本的库。解决这个问题的一种方法是通过安装对应的RPM包来提供缺失的库。 在提供的资源中,您...
如果你在系统中遇到libSM.so.6.0.1缺失的问题,那可能意味着你试图运行的某个程序需要这个库来执行。解决这个问题通常包括使用包管理器(如apt、yum或dnf)来安装相应的依赖包,或者手动将该库文件放到系统路径中...
5. **运行时错误**:如出现`libqt5core.so.5: cannot open shared object file: No such file or directory`这样的错误,表明系统找不到相应的动态库。这通常是因为库未正确安装,或者库路径未配置好。 6. **调试...
当发现`ldd`显示某个库找不到时,我们需要检查`RPATH`。可以使用`readelf -d`命令查看动态库的`RPATH`信息。如果`RPATH`中没有缺失的库,可以尝试使用`locate`命令全局搜索库文件,找到正确的路径。 在修复`so`库...
- **通过编译时选项** `-R` 或 `-rpath` : 这些选项允许开发者在编译程序时指定运行时的动态库路径,这些信息会直接写入到可执行文件中,使得程序在运行时能直接定位到正确的动态库位置,从而避免了使用`LD_LIBRARY_...
3. **库文件被意外删除或移动**:在系统维护过程中,库文件可能因为清理操作而被误删或移动至其他位置,从而导致Apache在安装时找不到必要的库文件。 ### 解决方案 针对“安装Apache提示缺少 libapr-1.so.0与...
这意味着在编译时,程序并不包含库的代码,而是运行时通过动态链接器加载到进程空间。这样做可以减少程序的大小,并允许系统更新库而无需重新编译所有使用它的应用程序。 五、异常处理与线程安全 在多线程环境中,...
在Linux系统中,动态链接库(Dynamic Linker Libraries)是程序运行时必不可少的一部分,它们提供了许多标准C++库的功能。`libstdc++.so.6`是GCC(GNU Compiler Collection)中的一个关键动态链接库,它包含了C++...
在Linux下,链接静态库时通常使用gcc的-l选项,例如: ```bash gcc -o myprogram main.o -L/path/to/library -lmylibrary ``` 其中,-L选项用于指定库文件所在的目录,-l选项用于指定库的名称(不包括前缀lib和文件...
总的来说,`libmysqlclient.so.*`是MySQL客户端库的核心组件,对于在Linux环境中运行需要连接MySQL数据库的应用程序至关重要。了解其工作原理以及如何适配不同版本的Linux发行版,对于系统管理员和开发人员来说都是...
总的来说,Linux下的动态链接库延迟绑定是提高系统性能的关键技术,它允许程序在不浪费资源的情况下充分利用共享库的功能。理解和掌握这一特性对于优化程序性能、调试以及深入理解Linux系统的内部运作至关重要。通过...
首先,需要将包含交叉编译器的压缩文件`arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz`从光盘复制到Fedora9系统中的某个目录下,例如`/tmp/`目录。接下来,进入该目录并执行解压命令: ```bash # cd /tmp # tar xvzf ...
在Windows中,DLL(Dynamic Link Library)允许程序在运行时动态地链接到库,而Linux下的SO(Shared Object)文件则实现了相同的功能。在STM32上,这个库可能包括一系列函数指针,它们在加载时被解析并绑定到相应的...
在Linux环境下进行编程时,经常会遇到需要使用非标准库的情况,这些库可能因为自定义安装或者第三方软件包而不在默认的系统路径下。理解和掌握如何正确地使用这些库是提高开发效率的关键。以下是对如何在Linux下使用...
当一个程序编译时关联到某个特定版本的库,它可能需要运行环境中有相同或更高版本的库才能正常工作。 在标签中提到的"stdc++",进一步强调了这个文件与C++编程语言的标准库有关。开发C++程序时,开发者经常使用这些...
它有一个明显的优点就是采用了共享库技术,也就是说 Linux 应用程序时,可以共享地调出一个动态程序库,这样就极大地节省了磁盘空间,同时 Linux 在磁盘上只读取程序中实际用到的部分,应用程序运行时,用户可以根据...
- **场景**:当需要将USB设备挂载到Linux系统中时。 - **命令**: ```bash mount /dev/sda1 /mnt/usb ``` - **说明**:将USB设备`/dev/sda1`挂载到`/mnt/usb`目录下。 ##### 5. 设置默认运行级别 - **场景**:...
对于不使用-fPIC编译的Linux动态库(so文件),每个程序加载时都需要进行重定位,这可能导致内存无法有效共享,因为每个程序都维护着库代码的副本。 位置无关代码(PIC)解决了这个问题,它通过获取指令指针(如x86...
在深入探讨嵌入式Linux开发笔记之前,我们需要...以上就是嵌入式Linux开发笔记所涉及的基础知识点,它包含了Linux下C语言编程开发的重要方面,对于学习嵌入式Linux系统的开发者来说,这些知识是必须掌握的基础技能。
7. **系统兼容性**:虽然此压缩包是为amd64架构设计的,但在某些情况下,它可能无法在不支持64位的系统(如32位x86)上运行。确保目标系统支持64位计算是成功部署的关键。 总结来说,"linux_amd64.zip"很可能是一个...