在您为INTEL C ++编译器(Linux)configuration的searchpath中找不到文件可执行文件

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

g++ -std=gnu++11 mycodename.cpp 

在terminal。 如何在Linux中删除以上错误? 一步一步的答案是高度赞赏。 我将编译器从setting...compiler更改为gnu gcc,但错误是关于英特尔编译器!

Solutions Collecting From Web of "在您为INTEL C ++编译器(Linux)configuration的searchpath中找不到文件可执行文件"

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

不要,因为你不能。

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

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

g++

首先,你用GCC (它是一个编译器 ,更确切地说就是GNU编译器集合 ;你可以用g++程序来编译C ++代码,用gcc编译C代码等等)编译。 阅读关于调用GCC的章节。

yoursourcecode.cpp 单个 C ++ 翻译单元 (包含一些头文件的C ++文件yoursourcecode.cpp )组成的简单C ++程序编译为可执行文件,请使用:

  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 ++源文件(以及多个翻译单元)组成的,则需要将每个翻译单元编译成一个目标文件 ,然后链接这些文件以使其可执行。 因此,对于两个源文件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 ++文件,你最好使用一些构建自动化工具,比如GNU make或者ninja 。 该工具将运行编译和链接命令如上。 你应该能够在命令行上编译(和链接)

gdb调试

一旦你有一个可执行的调试信息,你可以使用gdb调试器。 阅读使用GDB文档进行调试 。 我强烈建议在终端中使用gdb 。 用gdb ./yourprog (或gdb -tui ./yourprog如果你想要一个终端接口)启动它,那么你得到一个(gdb)提示符,你可以输入debugger命令。 最有用的是run (或r ), break (或b ), list (或l ), print (或p ), backtrace (或bt )。

如果你想直接运行你的程序,输入文件路径,例如./yourprog命令(即某个终端)。 注意globbing 。

为了进行基准测试,最好让你的g++编译-O1-O2等进行优化 。

但是Code :: Blocks呢?

该工具是一个编辑器,也可以运行上面的g++编译和gdb调试命令。 但是你真的需要在命令行中熟悉这些g++gdb工具。 一旦你能做到这一点, 深入到Code :: Blocks文档 ,了解如何配置您的源代码编辑器 (BTW我的首选是emacs )。

Code :: Blocks无法编译您的代码或调试您的程序。 它只是运行外部程序(比如g++编译器或者gdb调试器),但是你应该首先学习使用g++gdb (在Code :: Blocks之外或者其他源代码编辑器之外)。


顺便说一句,英特尔做一个专有的C ++编译器 (我听说它被称为icc ,你可能需要付出代价)。 还有Clang / LLVM ,它是(开源或免费软件)(像GCC一样,但有不同的许可证)。 它的clang++程序接受类似于g++ 。 在许多情况下,你可以简单地用clang++代替g++ clang++来使用Clang编译器。

也要注意$PATH变量 。 你需要配置你的shell(也许你的~/.bashrc )来改变它。

我强烈建议学习如何使用一些版本控制系统工具,如git (它有很好的视频和文档,功能非常强大)。