GCC 构建系统集成实战指南
一 本地开发环境快速集成
sudo apt update && sudo apt install build-essentialsudo apt install gcc-9 g++-9sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9,随后 sudo update-alternatives --config gcc 选择版本gcc -c main.c -o main.o,gcc main.o -o appgcc -g -O0 -o app main.c,使用 gdb ./app 调试gcc --version、g++ --versioncmake -G "MinGW Makefiles" ..;若探测到 MSVC,显式指定编译器:cmake -G "MinGW Makefiles" -DCMAKE_C_COMPILER=C:/mingw64/bin/gcc.exe -DCMAKE_CXX_COMPILER=C:/mingw64/bin/g++.exe ..mingw32-make 或 cmake --build .二 交叉编译与嵌入式工具链集成
sudo apt install gcc-arm-linux-gnueabiarm-linux-gnueabi-gcc hello.c -o hello_armCMAKE_SYSTEM_NAME、CMAKE_C_COMPILER、CMAKE_CXX_COMPILER-T path/to/linker.ld三 构建系统与工程模板
%.o: %.c、伪目标 cleanCC = gcc
CFLAGS = -Wall -O2 -g
TARGET = app
SRCS = main.c utils.c
OBJS = $(SRCS:.c=.o)
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJS) $(TARGET)
cmake_minimum_required(VERSION 3.15)
project(Hello C CXX)
set(CMAKE_C_STANDARD 17)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
add_executable(hello main.cpp)
target_compile_options(hello PRIVATE -Wall -Wextra -Wpedantic)
-DCMAKE_TOOLCHAIN_FILE=... 指定交叉编译器与系统名四 库与链接、调试与优化要点
gcc -fPIC -c foo.c -o foo.o,gcc -shared -o libfoo.so foo.oar crs libfoo.a foo.o bar.o-L/path/to/lib -lfoo;运行时动态库需位于 LD_LIBRARY_PATH 或系统库路径-g;推荐配合 AddressSanitizer/ThreadSanitizer 等工具定位问题-Wall -Wextra -Werror、-O2/-O3 优化级别、-g 与优化并存用于定位优化相关问题update-alternatives 管理 /usr/bin/gcc/g++ 的默认版本,避免全局污染