如何在终端

时间:2018-05-25 09:13:31

标签: c++ linux eclipse terminal

我正在使用Ubuntu,我在Eclipse Neon中编写了我的c ++代码。 我的工作区包含4个项目。主项目名为BaseCppProjectRun(它包含main.cpp文件),我还有其他项目名称:Encoders,frmwrk,NetworkLayer - 使用其中每个项目的BaseCppProjectRun。

如果我直接从eclipse运行我的程序,一切正常。 但我想从终端运行我的程序 - 我不能。 因为当我试图像这样运行我的程序时:

root@ubuntu:/builds/BaseCppProject/BaseCppProjectRun# ./Debug/BaseCppProjectRun

我收到此错误:

./Debug/BaseCppProjectRun: error while loading shared libraries: libfrmwrk.so: cannot open shared object file: No such file or directory

正如我之前所说,如果我直接从eclipse运行它,一切正常。

如何从终端运行我的程序?

2 个答案:

答案 0 :(得分:2)

Linux如何知道libfrmwrk.so的位置,如果你不把它放在正常的地方,也不知道它在哪里可以找到。

Eclipse似乎设置了运行时链接程序所查看的路径,因此在加载程序时,运行时链接程序会知道在哪里找到libfrmwrk.so等等。

您必须

  • 安装这些库(.so' s),以便在默认位置找到它们,或
  • 设置LD_LIBRARY_PATH以包含要查看的所有文件夹。

我几乎没有使用Eclipse CDT,但你现在可以导出一些项目格式,让你轻松安装。

另一件事:似乎你正在运行你仍在以root身份调试的软件:这是一个糟糕的想法,如果可以避免,请避免使用它。

答案 1 :(得分:0)

我终于搞清楚了!

参考Marcus Muller的答案+我的步骤这是我修复它的方法(通过终端的所有步骤):

  1. 在我的工作区目录中创建新目录并将其命名为libs。
  2. 在每个项目中执行:右键单击> c / C ++ Build>构建步骤(选项卡)和构建后步骤粘贴此:
  3. 
    
    cp ${BuildArtifactFilePrefix}${BuildArtifactFileName} "${WorkspaceDirPath}/libs/"
    
    
    

    此代码在编译程序时将so文件直接复制到libs目录中。

    最后,在你的终端执行:

    
    
    export LD_LIBRARY_PATH=/builds/BaseCppProject/libs/
    
    
    

    现在您可以通过终端运行您的程序。