首页 > 其他分享 >cpp文件 编译通过,但是运行时提示找不到动态库。

cpp文件 编译通过,但是运行时提示找不到动态库。

时间:2024-02-26 16:25:16浏览次数:20  
标签:文件 LD 提示 路径 library 编译 cpp PATH 动态

如果编译通过了,但是在运行时提示找不到动态库,通常是因为系统无法找到正确的动态库路径。

1. **确认动态库路径**:首先,确保动态库文件存在于编译时指定的路径中。你可以检查编译时是否指定了正确的库路径,并且库文件是否位于该路径中。

2. **设置LD_LIBRARY_PATH环境变量**:在运行程序之前,可以设置LD_LIBRARY_PATH环境变量,将包含动态库文件的目录添加到其中。例如,在终端中执行以下命令:

```bash
export LD_LIBRARY_PATH=/path/to/your/library:$LD_LIBRARY_PATH
```

将`/path/to/your/library`替换为动态库文件所在的实际路径。

3. **使用rpath选项**:在CMake文件中,可以使用`-Wl,-rpath`选项来指定运行时动态链接器应该搜索动态库的路径。例如:

```cmake
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath,/path/to/your/library")
```

将`/path/to/your/library`替换为动态库文件所在的实际路径。

4. **更新动态链接器缓存**:如果你将动态库文件移动到新的位置,或者进行了其他更改,可以尝试通过以下命令来更新动态链接器缓存:

```bash
sudo ldconfig
```

这将更新系统的动态链接器缓存,使其能够正确找到新的动态库路径。

 

标签:文件,LD,提示,路径,library,编译,cpp,PATH,动态
From: https://www.cnblogs.com/whcjob/p/18034588

相关文章

  • 从一次DEBUG体会modernCPP
    今天写树形dp,用匿名函数出现了极其玄学的报错,modernCPP给我上了一课note:'solve()::<lambda(auto:23,int,int)>::~()'isimplicitlydeletedbecausethedefaultdefinitionwouldbeill-formed源代码voidsolve(){intn;std::cin>>n;std::vector<i......
  • Xmake v2.8.7 发布,新增 cosmocc 工具链支持,一次编译到处运行
    Xmake是一个基于Lua的轻量级跨平台构建工具。它非常的轻量,没有任何依赖,因为它内置了Lua运行时。它使用xmake.lua维护项目构建,相比makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。我们......
  • idea中增强for循环提示unexpected token
    报错如下:2、解决方式:1).在java中for语句是不能像这样被单独写在外面的。2).必须用一个初始化方法封装起来。比如main方法,如下图:感谢前辈https://blog.csdn.net/li1325169021/article/details/105492776......
  • ROS2 humble交叉编译环境配置
    目录配置toolchain文件:库文件交叉编译指令:问题点:1、find_package找不到自定义依赖包的问题2、libarmadillo.so.10:undefinedreferenceto`xxx'3、/usr/bin/moc找不到直接上干货,本文将介绍配置ROS2的交叉编译环境编译平台:x86ubuntu22.04目标平台:armv8ubuntu22.04ROS2......
  • 解决qtcreator在某次用sudo启动后,再次启动提示权限不足的问题
    现象:sudo./qtcreator启动qt,退出,再次启动打开项目提示"permissiondenied"这是因为第一次使用sudo权限启动QtCreator时,生成了一些配置文件或者临时文件,这些文件的所有者变成了root用户。因此,当你尝试以普通用户身份再次打开QtCreator时,会因为缺少对这些文件的访问......
  • UE5源码版本在多个工程来回切换时重复编译引擎问题
    细看UBT日志,已经给出了提示11>ParsingheadersforActionRPG11>RunningInternalUnrealHeaderToolD:\UEProject\ActionRPG\ActionRPG.uprojectD:\UEProject\ActionRPG\Intermediate\Build\Win64\ActionRPG\Development\ActionRPG.uhtmanifest-WarningsAsError......
  • javacpp是什么?
    javaCPP提供了在Java中高效访问本地C++的方法。采用JNI技术实现,支持所有Java实现包括Android系统,Avian和RoboVM。 JavaCPP提供了一系列的Annotation将Java代码映射...IntroductionJavaCPPprovidesefficientaccesstonativeC++insideJava,notunlikethewaysomeC/C......
  • 编译器负责转换源代码
    能够把C语言等高级编程语言编写的源代码转换成本地代码的程序称为编译器。每个编写源代码的编程语言都需要其专用的编译器。将C语言编写的源代码转换成本地代码的编译器称为C编译器。编译器首先读人代码的内容,然后再把源代码转换成本地代码。编译器中就好像有一个源代码同本地......
  • kkFileView文档在线预览项目在IDEA运行正常正常,打包jar提示找不到office组件,请确认'of
    2024-02-2413:36:58.530WARN17976---[main]ConfigServletWebServerApplicationContext:Exceptionencounteredduringcontextinitialization-cancellingrefreshattempt:org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithn......
  • linux中修改PS1变量解决shell命令提示符太长
    原文地址:https://www.cnblogs.com/liqinglucky/p/PS1.html在使用linux时,当我的文件目录很深的时候,前面的命令提示符太长会导致后面输入不方便。于是就想能不能不显示全路径名,只保留显示最后一个目录就可以。root@ubuntu:/home/ubuntu/Documents/Files/Music#研究发现shell中PS......