我想使用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编译器的!
答案 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.cpp
和yoursecondsource.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 automation或GNU 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。
出于基准测试的目的,最好通过./yourprog
或g++
等方式向-O1
编译器询问optimize。
该工具是一个编辑器,也可以运行上面的-O2
编译和g++
调试命令。但是你真的需要在命令行上熟悉这些gdb
和g++
工具。完成后,深入了解Code::Blocks documentation ,了解如何配置source code editor(BTW,我的偏好为gdb
)。
Code :: Blocks无法编译代码或调试程序。它只是运行外部程序(例如emacs
编译器或g++
调试器),但您应该首先学会自己使用gdb
和g++
(在代码之外) ::块或任何其他源代码编辑器。)
gdb
,您可能需要付费)。还有Clang/LLVM,它是(开源或)免费软件(如GCC,但具有不同的许可证)。它的icc
程序接受与clang++
类似的参数。在许多情况下,您只需将g++
替换为g++
即可使用该Clang编译器。
还要注意$PATH
variable。您需要配置shell(可能是clang++
)来更改它。
我强烈建议您学习如何使用某些version control系统工具,例如git(它具有良好的视频和文档,功能非常强大)。