我正在使用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运行它,一切正常。
如何从终端运行我的程序?
答案 0 :(得分:2)
Linux如何知道libfrmwrk.so的位置,如果你不把它放在正常的地方,也不知道它在哪里可以找到。
Eclipse似乎设置了运行时链接程序所查看的路径,因此在加载程序时,运行时链接程序会知道在哪里找到libfrmwrk.so等等。
您必须
LD_LIBRARY_PATH
以包含要查看的所有文件夹。我几乎没有使用Eclipse CDT,但你现在可以导出一些项目格式,让你轻松安装。
另一件事:似乎你正在运行你仍在以root身份调试的软件:这是一个糟糕的想法,如果可以避免,请避免使用它。
答案 1 :(得分:0)
我终于搞清楚了!
参考Marcus Muller的答案+我的步骤这是我修复它的方法(通过终端的所有步骤):
cp ${BuildArtifactFilePrefix}${BuildArtifactFileName} "${WorkspaceDirPath}/libs/"

此代码在编译程序时将so文件直接复制到libs目录中。
最后,在你的终端执行:
export LD_LIBRARY_PATH=/builds/BaseCppProject/libs/

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