GCC:默认将.c文件视为C程序,.cpp文件需手动指定为C++(如gcc -xc++);默认链接C标准库(libc),编译C++程序需手动添加-lstdc++参数。
G++:自动将.c和.cpp文件均视为C++程序,并启用C++语法解释(如预定义__cplusplus宏);自动链接C++标准库(libstdc++),无需额外参数。
两者区别:
扩展:G++对C++11/17/20标准支持更完善(如-std=c++17),而GCC需显式指定。
安装完成后验证:
gcc --version
g++ --version
make --versionmake:适合小型项目,手动维护规则,简单直接。
CMake:适合跨平台和大型项目,自动生成 Makefile 等构建文件,更灵活强大。
详见:make和Cmake区别
手动敲编译命令容易出错,Makefile 让一切变得自动化:
# 定义编译器,这里选择 GCC
CC = gcc
# 定义编译选项:
# -Wall:打开所有警告
# -g:生成调试信息
CFLAGS = -Wall -g
# 定义目标规则 'all',默认目标是 main
all: main
# 定义如何生成 main 可执行文件
# 使用目标 main.o 和 func.o 链接生成 main
main: main.o func.o
$(CC) $(CFLAGS) -o main main.o func.o
# 定义生成 .o 文件的通用规则
# 这里 $< 表示匹配的 .c 文件
%.o: %.c
$(CC) $(CFLAGS) -c $<
# 定义清理规则,删除所有中间文件和最终生成的目标文件
clean:
rm -rf *.o main执行命令:
make # 自动编译,生成目标文件 main
make clean # 清理编译生成的中间文件和可执行文件写 Makefile 太麻烦?那就用 CMake!步骤如下:
sudo pacman -S cmake# 指定最低版本要求,这里是 3.10
cmake_minimum_required(VERSION 3.10)
# 定义项目名称,这里是 MyProject
project(MyProject)
# 添加可执行文件 main,并指定需要的源文件
# main.cpp 和 func.cpp 是需要编译的 C++ 源文件
add_executable(main main.cpp func.cpp)# 创建一个名为 build 的目录,存放生成的构建文件
mkdir build && cd build
# 使用 CMake 生成 Makefile,.. 表示查找上级目录中的 CMakeLists.txt
cmake ..
# 使用 make 根据生成的 Makefile 编译项目
makesudo pacman -S gdbg++ -g hello.cpp -o hello # 编译的时候必须要加上 -g 参数,不然调试不了。
gdb ./hello注:合理使用日志打印也是一种不错的调试方法,有些时候比调试器更管用。
sudo pacman -S valgrindvalgrind ./your_program推荐:zsh + oh-my-zsh + vim
推荐:Git
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。