无法在配置的搜索路径中找到INTEL C ++编译器(Linux)的文件可执行文件

时间:2017-11-02 18:07:07

标签: c++ linux c++11 codeblocks

我想使用code :: blocks来调试我的c ++代码。我打开一个新项目并粘贴我的代码。但是有以上错误。说实话,我不确定我的编译器是什么!当我想运行我的代码时,我写道:

data = read.table(text = "   Date     Time  Temp      Appb    Bppb    Cppb     Dppb    Eppb      Fppb
                  1 10/30/17 21:32:33 25.23 -0.469304 22.4445 35.5993 -18.4843 52.0488 -2.947340   
                  2 10/30/17 21:32:34 25.23 -1.255780 21.8248 34.2364 -20.9051 47.4344 -2.071230  
                  3 10/30/17 21:32:35 25.23 -0.769233 21.1590 30.5892 -20.9347 42.6061 -0.991607  
                  4 10/30/17 21:32:36 25.23 -0.874262 21.3353 25.4841 -19.6127 38.3224 -0.452383  
                  5 10/30/17 21:32:37 25.24 -0.819439 21.1916 21.4919 -16.5991 36.1331 -0.150002  
                  6 10/30/17 21:32:38 25.24 -1.895730 21.5345 18.0576 -17.2539 31.7448 -0.311064", 
                  header = TRUE, stringsAsFactors = FALSE)

在终端。 如何在Linux中删除上述错误? 一步一步的答案非常感谢。 我将编译器从g++ -std=gnu++11 mycodename.cpp 更改为gnu gcc,但错误是关于intel编译器的!

1 个答案:

答案 0 :(得分:1)

  

我想使用code :: blocks来调试我的c ++代码。

不要,因为你不能。

Code::Blocks只是一个IDE,它是一些能够运行编译器和调试器的源代码编辑器。所以Code :: Blocks是一个编译器,并且不是一个调试器(但它可以运行它们)。

我不会解释你如何使用Code :: Blocks。它有一些文档和一些论坛。我宁愿尝试解释如何调试C ++代码。

使用g++

进行编译

首先,使用GCC进行编译(compiler,更准确地说是 GNU编译器集合;您将在g++程序中使用它编译C ++代码,用gcc编译C代码等等。)。 阅读有关Invoking GCC

的章节

将由单个 C ++ translation unit(包含一些标题的C ++文件yoursourcecode.cpp)组成的简单C ++程序编译成可执行文件yourprog使用:< / p>

 g++  -std=gnu++11 -Wall -Wextra -g yoursourcecode.cpp -o yourprog

请注意:

  • g++的程序参数顺序非常重要。

  • -std=gnu++11定义了您的C ++方言

  • -Wall -Wextra要求提供所有警告及其他一些警告。你真的想要警告。然后,您需要改进源代码以完全不发出警告并重复编译。

  • -g请求调试信息(DWARF格式)。您希望能够进行调试。

  • -o yourprog要求编译器生成yourprog ELF可执行文件

  • 作为输出

顺便说一句,您不能使用Code :: Blocks来编译代码。您可以将其配置为运行上述命令进行编译。

如果您的程序由几个 C ++源文件(以及多个翻译单元)组成,则需要将每个翻译单元编译为object file,然后编译为link这些制作你的可执行文件因此,您需要运行两个源文件yourfirstsource.cppyoursecondsource.cpp

  • g++ -Wall -Wextra -g -c yourfirstsource.cpp -o yourfirstsource.o将第一个yourfirstsource.cpp编译到yourfirstsource.o目标文件中。
  • g++ -Wall -Wextra -g -c yoursecondsource.cpp -o yoursecondsource.o编译第二个翻译单元。
  • g++ yourfirstsource.o yoursecondsource.o -o yourprog将两个目标文件链接到可执行文件中。您可以使用-L dir -l libname 参数链接库(顺序很重要,从较高级别到较低级别的库)

实际上,如果您有多个C ++文件,那么您最好使用build automationGNU make之类的ninja工具。该工具将运行如上所述的编译和链接命令。 您应该能够在命令行上编译(和链接)

使用gdb

进行调试

一旦有了包含调试信息的可执行文件,就可以使用gdb调试器。 阅读Debugging with GDB文档。我强烈建议在终端中使用gdb 。使用gdb ./yourprog启动它(如果需要终端接口,则为gdb -tui ./yourprog),然后得到(gdb)提示符,您可以键入调试器命令。最有用的是run(或r),break(或b),list(或l),{{1 (或print),p(或backtrace)。

如果要直接运行程序,请键入其文件路径,例如命令中的bt(即某个终端)。请注意globbing

出于基准测试的目的,最好通过./yourprogg++等方式向-O1编译器询问optimize

但是Code :: Blocks

该工具是一个编辑器,也可以运行上面的-O2编译和g++调试命令。但是你真的需要在命令行上熟悉这些gdbg++工具。完成后,深入了解Code::Blocks documentation ,了解如何配置source code editor(BTW,我的偏好为gdb)。

Code :: Blocks无法编译代码或调试程序。它只是运行外部程序(例如emacs编译器或g++调试器),但您应该首先学会自己使用gdbg++(在代码之外) ::块或任何其他源代码编辑器。)

顺便说一下,英特尔制作了一个proprietary C++ compiler(我听说它被称为gdb,您可能需要付费)。还有Clang/LLVM,它是(开源或)免费软件(如GCC,但具有不同的许可证)。它的icc程序接受与clang++类似的参数。在许多情况下,您只需将g++替换为g++即可使用该Clang编译器。

还要注意$PATH variable。您需要配置shell(可能是clang++)来更改它。

我强烈建议您学习如何使用某些version control系统工具,例如git(它具有良好的视频和文档,功能非常强大)。