You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ubuntu终端运行Eclipse Neon编写的依赖共享库的C++程序

解决终端运行C++程序时共享库找不到的问题

嘿,这个问题我之前也碰到过!本质是终端环境和Eclipse的运行环境不一样——Eclipse在启动程序时,会自动把你依赖项目的库输出目录(比如各个子项目的Debug文件夹)加入到动态链接器的搜索路径里,但终端默认不会做这件事,所以系统找不到libfrmwrk.so这类依赖库。

给你几个靠谱的解决办法,按需选择:

方法1:临时配置(单次会话有效)

这是最快的临时方案,适合只是偶尔在终端运行的情况:

  1. 先确认你的三个依赖库libfrmwrk.so、libEncoders.so、libNetworkLayer.so的位置,一般它们都在各自项目的Debug目录下,比如路径大概是:
    • /builds/BaseCppProject/frmwrk/Debug/
    • /builds/BaseCppProject/Encoders/Debug/
    • /builds/BaseCppProject/NetworkLayer/Debug/
  2. 在终端里执行这条命令,把这些路径添加到动态链接器的搜索路径:
    export LD_LIBRARY_PATH=/builds/BaseCppProject/frmwrk/Debug:/builds/BaseCppProject/Encoders/Debug:/builds/BaseCppProject/NetworkLayer/Debug:$LD_LIBRARY_PATH
    
  3. 接着直接运行你的程序就行:
    ./Debug/BaseCppProjectRun
    

注意:这个设置只在当前终端窗口有效,关闭窗口后就失效了。

方法2:永久配置(全局生效)

如果需要每次打开终端都能直接运行程序,可以把库路径添加到系统的动态链接器配置里:

  1. 用编辑器新建一个配置文件(需要sudo权限):
    sudo nano /etc/ld.so.conf.d/basecppproject.conf
    
  2. 在文件里逐行写入三个依赖库的路径:
    /builds/BaseCppProject/frmwrk/Debug
    /builds/BaseCppProject/Encoders/Debug
    /builds/BaseCppProject/NetworkLayer/Debug
    
  3. 保存退出后,执行这条命令让系统更新链接器缓存:
    sudo ldconfig
    

之后不管哪个终端会话,你都能直接运行./Debug/BaseCppProjectRun了。

方法3:嵌入路径到可执行文件(一劳永逸)

这个方法是把依赖库的路径直接编译进可执行文件里,这样程序不管在哪运行,都会自动去指定路径找库,完全不用依赖环境变量:

  1. 回到Eclipse,打开BaseCppProjectRun项目的属性窗口(右键项目 -> Properties)
  2. 依次展开C/C++ Build -> Settings -> GCC C++ Linker -> Miscellaneous
  3. 在Linker flags输入框里添加以下内容:
    -Wl,-rpath=/builds/BaseCppProject/frmwrk/Debug:/builds/BaseCppProject/Encoders/Debug:/builds/BaseCppProject/NetworkLayer/Debug
    
  4. 点击Apply and Close,然后重新编译整个项目
    之后生成的BaseCppProjectRun可执行文件就自带了库路径信息,直接在终端运行再也不会报找不到库的错啦!

内容的提问来源于stack exchange,提问作者Yaron Israeli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:42:23