在编译之前我们需要在系统里安装G++ GCC,它们就是Linux下的C++/C的编译器。代码如下
代码:
sudo apt-get install build-essential
sudo apt-get install gcc
sudo apt-get install g++
好,现在我们在文本编辑器里写一个C的简单的程序(好像所有学习C或者C++的书都会出现)
代码:
#include <stdio.h>
int main()
{
printf("Hello,World!\n");
return 0;
}
现在存盘为Hello.c,打开你的终端,并在文件当前目录输入:
代码:
gcc Hello.c -o hello
编译时可能会出现如下警告:no newline at and of file ,只有在文件结尾添加一个新行就好了。
然后在终端中输入 ./hello ,你就能在终端中看到程序运行结果了。
下面来说下C++是如何编译的
写程序(不用我多说了吧)
代码:
#include <iostream>
using namespace std;
int main()
{
cout<<"Hello,World!\n"<<endl;
return 0;
}
存盘为Hello.cpp
使用gcc编译??? 不对,这里我们使用g++来编译C++程序
代码:
g++ Hello.cpp -o hello
编译多个文件我们怎么办??? 来看下面出了三个文件Hello.h, Hello.cpp, MyFirst.cpp
代码:
//file_NO1:Hello.h
class Hello {
public:
Hello();
int Display();
};
//file_NO2:Hello.cpp
#include <iostream>
#include "Hello.h"
using namespace std;
Hello::Hello()
{
}
int Hello::Display()
{
cout<<"Hello,World!\n"<<endl;
return 0;
}
//file_NO3:MyFirst.cpp
#include <iostream>
#include "Hello.cpp"
int main()
{
Hello theHello;
theHello.Display();
return 0;
}
在g++中有一个参数-c 可以只编译不连接,那么我们就可以按如下顺序编译文件,
代码:
g++ -c Hello.cpp -o Hello.o
g++ -c MyFirst.cpp -o MyFirst.o
g++ MyFirst.o Hello.o -o MyFirst
你是否会问,如果是一个项目的话,可能会有上百个文件,这样的编译法,人不是要累死在电脑前吗,或者等到你编译成功了,岂不是头发都白了,呵呵,所以我们要把上述的编译过程写进以下一个文本文件中:
Linux下称之为makefile
#这里可以写一些文件的说明
MyFirst: MyFirst.o hello.o
g++ MyFirst.o hello.o -o MyFirst
Hello.o:Hello.cpp
g++ -c Hello.cpp -o Hello.o
MyFirst.o:MyFirst.cpp
g++ -c MyFirst.cpp -o MyFirst.o
存盘为MyFirst,在终端输入:make MyFist ,程序出现了错误可是所有程序员共同的敌人,在编写程序时我们应该尽量的去避免错误的出现,不过编写的时候再怎么都不可避免的出现这样那样的错误,对程序进行必要的调试是一个好主意,那我们怎么来调试程序呢,看下面:
gdb ./文件名
以下为调试状态下的可以用到的命令(可以仅输入单词的输入,如break可简为b),尖括号中为说明
list <显示源代码>
break 行号 <设置断点>
run <运行程序>
continue <继续从断点处执行>
print 变量 <调试时查看变量的值>
del 行号 <删除断点>
step <单步执行,可跟踪到函数内部>
next <单步执行,不可跟踪到函数内部>
quit <退出>
分享到:
相关推荐
ARM Linux下的GCC编译器是针对ARM处理器架构的GNU编译器集合,它能够处理C、C++、Objective-C等编程语言的源代码,最终编译生成适合ARM处理器的机器代码。在进行嵌入式Linux开发时,GCC编译器扮演了至关重要的角色,...
在Linux期末作业中,可能包括使用C语言编写程序,使用GCC编译并解决编译错误,利用GDB进行调试,以及编写简单的Shell脚本来实现自动化任务。这些技能是Linux系统管理和软件开发的基础,对于理解操作系统的工作原理和...
./configure --target=arm-linux-gnueabi --host=x86_64-linux-gnu --prefix=/path/to/install --enable-languages=c,c++ --disable-multilib ``` 其中,`--target`指定了目标体系结构,`--host`是构建工具链的...
ARM-Linux-GCC工具链包含了预编译的C和C++编译器、链接器以及其他必要的工具,如汇编器和调试器,它们都针对ARM处理器进行了优化。 ARM-Linux-GCC 5.4.0 版本包含以下组件: 1. **GCC (GNU Compiler Collection)**...
2. **编译器** (cc/g++): 编译器如gcc或g++,将预处理过的C/C++源代码转化为汇编代码。 3. **汇编器** (as): 汇编器将汇编代码转化为机器语言的二进制目标文件。 4. **链接器** (ld): 链接器负责合并多个目标文件...
在嵌入式系统开发中,尤其是在Linux环境下针对ARM架构的设备进行编程时,常常需要使用到`arm-linux-gcc`交叉编译工具。这个工具允许我们在一个非ARM平台(如x86架构的个人电脑)上构建适用于ARM处理器的软件。下面将...
这里的`gcc`代表GNU Compiler Collection,是C、C++和其他语言的编译器。版本号`6.2.1-2016.11`表明这是2016年11月发布的GCC 6.2.1版本。 5. **实测可用**: 提供者提到该编译链已经在德克萨斯仪器的OK系列(例如...
GDB是GNU项目的一部分,是一款强大的源代码级调试器,支持多种编程语言,包括C、C++、Objective-C、Python等。在Android开发中,GDB用于远程调试应用程序,通过与设备上的目标程序进行通信,允许开发者查看变量值、...
这里,4.3.3是指GCC(GNU Compiler Collection)的一个特定版本,它包含了一系列的编译器,如C、C++、Fortran等,以及链接器和其他工具。 交叉编译链通常包括以下组件: 1. **预处理器**(cpp):处理源代码中的宏...
5. **使用示例**:教程可能会给出一个简单的C或C++程序,演示如何使用arm-linux-gcc-4.3.2编译并生成适用于ARM设备的可执行文件。 6. **调试和问题解决**:可能包含在遇到错误时如何调试和查找解决方案的提示,如...
### Linux Eclipse C++项目编译与调试 #### 一、前言 在当前的软件开发环境中,许多C++开发者仍然采用传统的文本编辑器配合gdb命令的方式进行编码和调试,这种方式虽然简单直接,但对于大型项目而言,其低效性与...
这个版本的GCC(GNU Compiler Collection)是4.9.2,是一个稳定且功能丰富的编译器,它包含了C、C++、Fortran、Ada和Go等编程语言的前端。交叉编译是解决不同架构之间编译问题的关键技术,尤其在嵌入式系统开发中,...
它包含了C、C++、Fortran等语言的编译器,能够将源代码编译为针对ARM处理器的二进制代码。4.5.1是这个工具链的一个版本号,代表了其功能特性和优化程度。 **2. 交叉编译的基本概念** 交叉编译是指在一种架构的机器...
然而,由于Android操作系统基于Linux内核,其应用程序大多用C/C++编写,这就涉及到一个关键的技术环节——交叉编译。本文将深入探讨aarch64-linux-android-4.9这一针对Android平台的64位架构(aarch64)的交叉编译...
这个工具链是为开发MIPS架构上的Linux应用程序而设计的,它包含了编译、链接以及其他必要的工具,使得开发者能够在非MIPS平台(如Ubuntu 9.10)上构建和调试MIPS平台的应用程序。 MIPS(Microprocessor without ...
通过JNI(Java Native Interface),Java代码可以调用C/C++编译的本地库,实现高性能计算或访问硬件特性。 六、注意事项 1. **ABI兼容性**:确保编译的目标ABI(Application Binary Interface)与目标设备的ABI...
总的来说,ARM Linux GCC 4.5.1是嵌入式系统开发中的一个重要工具,尤其适用于需要在ARM处理器上运行C或C++代码的项目。其优化的代码生成和对新C++标准的支持,使其成为开发高效、可靠的嵌入式应用程序的理想选择。...
- **新功能支持**:随着C++和C语言标准的更新,新版本的GCC会支持更多新特性。 - **错误修复**:新版本修复了已知的问题,提高了编译的稳定性和可靠性。 - **更好的库兼容性**:更新的GCC与最新的库和框架更兼容,有...
5. **调试与部署**:通过`arm-none-linux-gnueabi-gdb`进行远程调试,完成程序的调试后,将编译好的二进制文件传输到目标硬件上运行。 五、参考资源 对于如何具体搭建和使用这个工具链,可以参考提供的链接:...