Skip to content
← 返回文件与文本处理列表
文件与文本处理任务与配置

开发环境、代码编辑与项目生成命令 · 编译 C/C++、分布式构建与其他构建入口至专用开发环境 ​

返回分篇目录

编译 C/C++、分布式构建与其他构建入口 ​

先按语言选择 gcc/g++ 或 clang/clang++,再看 distcc;Ant、Arduino 和 adscript 保留独立构建任务。

gcc · 预处理和编译 C 和 C++ 源文件,然后汇编并将他们链接起来 ​

GCC (GNU Compiler Collection) 项目的组件之一。 更多信息:https://gcc.gnu.org/onlinedocs/gcc/。

  • 将一组源文件编译为二进制文件:
bash
gcc {{源/文件/的路径1.c 源/文件/的路径2.c ...}} {{[-o|--output]}} {{可执行/文件/的路径}}
  • 启用常见警告(-Wall 不包含所有警告):
bash
gcc {{源/文件/的路径.c}} -Wall {{[-o|--output]}} {{output_executable}}
  • 打印普通警告和调试信息, 并在不影响调试的情况下优化:
bash
gcc {{源/文件/的路径.c}} -Wall {{[-g|--debug]}} -Og {{[-o|--output]}} {{可执行/文件/的路径}}
  • 包含与源文件不在同一路径下的库:
bash
gcc {{源/文件/的路径.c}} {{[-o|--output]}} {{可执行/文件/的路径}} -I{{头/文件/的目录}} -L{{库/的目录}} -l{{库的名字}}
  • 将源文件编译为汇编文本(停止在汇编前):
bash
gcc -S {{源/文件/的路径}}
  • 将源文件编译成目标文件(.o)而不链接:
bash
gcc {{[-c|--compile]}} {{源/文件/的路径1.c 源/文件/的路径2.c...}}
  • 优化编译后程序的性能:
bash
gcc {{源/文件/的路径.c}} -O{{1|2|3|fast}} {{[-o|--output]}} {{可执行/文件/的路径}}
  • 打印版本信息:
bash
gcc --version

g++ · 编译 C++ 源文件 ​

GCC (GNU Compiler Collection) 项目的组件之一。 更多信息:https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html。

  • 将一组源文件编译为二进制文件:
bash
g++ {{源/文件/的路径1.cpp 源/文件/的路径2.cpp ...}} {{[-o|--output]}} {{可执行/文件/的路径}}
  • 启用常见警告(-Wall 不包含所有警告):
bash
g++ {{源/文件/的路径.cpp}} -Wall {{[-o|--output]}} {{output_executable}}
  • 打印普通警告和调试信息, 并在不影响调试的情况下优化:
bash
g++ {{源/文件/的路径.cpp}} -Wall {{[-g|--debug]}} -Og {{[-o|--output]}} {{可执行/文件/的路径}}
  • 指定 C++ 语言标准 (C++98/C++11/C++14/C++17):
bash
g++ {{源/文件/的路径.cpp}} -std={{c++98|c++11|c++14|c++17}} {{[-o|--output]}} {{可执行/文件/的路径}}
  • 包含与源文件不在同一路径下的库:
bash
g++ {{源/文件/的路径.c}} {{[-o|--output]}} {{可执行/文件/的路径}} -I{{头/文件/的目录}} -L{{库/的目录}} -l{{库的名字}}
  • 将多个源文件编译并链接为可执行文件:
bash
g++ {{[-c|--compile]}} {{源/文件/的路径1.cpp 源/文件/的路径2.cpp ...}} && g++ {{[-o|--output]}} {{可执行/文件/的路径}} {{目标/文件/的路径1.o 目录/文件/的路径2.o ...}}
  • 优化编译后程序的性能:
bash
g++ {{源/文件/的路径.cpp}} -O{{1|2|3|fast}} {{[-o|--output]}} {{可执行/文件/的路径}}
  • 打印版本信息:
bash
g++ --version

clang · 编译 C,C++ 以及 Objective-C 源文件。可以无缝替代 GCC ​

LLVM 项目的组件之一。 更多信息:https://clang.llvm.org/docs/ClangCommandLineReference.html。

  • 将多个文件编译为可执行文件:
bash
clang {{源/文件/的路径1.c 源/文件/的路径2.c ...}} {{[-o|--output]}} {{可执行/文件/的路径}}
  • 启用常见警告(-Wall 不包含所有警告):
bash
clang {{源/文件/的路径.c}} -Wall {{[-o|--output]}} {{可执行文件}}
  • 打印普通警告和调试信息, 并在不影响调试的情况下优化:
bash
clang {{源/文件/的路径.c}} -Wall {{[-g|--debug]}} -Og {{[-o|--output]}} {{可执行/文件/的路径}}
  • 包含与源文件不在同一路径下的库:
bash
clang {{源/文件/的路径.c}} {{[-o|--output]}} {{可执行/文件/的路径}} -I{{头/文件/的目录}} -L{{库/的目录}} -l{{库的名字}}
  • 将源文件编译为 LLVM 中间表示(IR):
bash
clang {{[-S|--assemble]}} -emit-llvm {{源/文件/的路径.c}} {{[-o|--output]}} {{IR/的/路径.ll}}
  • 将源文件编译成目标文件(.o)而不链接:
bash
clang {{[-c|--compile]}} {{源/文件/的路径1.c 源/文件/的路径2.c...}}
  • 优化编译后程序的性能:
bash
clang {{源/文件/的路径.c}} -O{{1|2|3|fast}} {{[-o|--output]}} {{可执行/文件/的路径}}
  • 打印版本信息:
bash
clang --version

clang++ · 编译 C++ 源文件 ​

LLVM 项目的组件之一。 更多信息:https://clang.llvm.org/docs/UsersManual.html#command-line-options。

  • 将一组源文件编译为二进制文件:
bash
clang++ {{源/文件/的路径1.cpp 源/文件/的路径2.cpp ...}} {{[-o|--output]}} {{可执行/文件/的路径}}
  • 启用常见警告(-Wall 不包含所有警告):
bash
clang++ {{源/文件/的路径.cpp}} -Wall {{[-o|--output]}} {{可执行文件}}
  • 打印普通警告和调试信息, 并在不影响调试的情况下优化:
bash
clang++ {{源/文件/的路径.cpp}} -Wall {{[-g|--debug]}} -Og {{[-o|--output]}} {{可执行/文件/的路径}}
  • 指定 C++ 语言标准:
bash
clang++ {{源/文件/的路径.cpp}} -std={{c++20}} {{[-o|--output]}} {{可执行/文件/的路径}}
  • 包含与源文件不在同一路径下的库:
bash
clang++ {{源/文件/的路径.cpp}} {{[-o|--output]}} {{可执行/文件/的路径}} -I{{头/文件/的目录}} -L{{库/的目录}} -l{{库的名字}}
  • 将源文件编译为 LLVM 中间表示(IR):
bash
clang++ {{[-S|--assemble]}} -emit-llvm {{源/文件/的路径.cpp}} {{[-o|--output]}} {{IR/的/路径.ll}}
  • 优化编译后程序的性能:
bash
clang++ {{源/文件/的路径.cpp}} -O{{1|2|3|fast}} {{[-o|--output]}} {{可执行/文件/的路径}}
  • 打印版本信息:
bash
clang++ --version

distcc · 与 distccd 搭配使用的分布式 C/C++/ObjC 编译客户端 ​

更多信息:https://manned.org/distcc。

  • 使用类似 gcc 的编译器编译源文件:
bash
distcc {{gcc}} -c {{路径/到/源文件.c}} -o {{路径/到/输出文件.o}}
  • 设置用于分布式编译的远程主机:
bash
export DISTCC_HOSTS="localhost {{主机IP1 主机IP2 ...}}"
  • 使用 distcc 和 make 并行编译项目:
bash
make {{[-j|--jobs]}} {{并行任务数}} CC="distcc {{gcc}}"
  • 显示当前配置的 distcc 主机列表:
bash
distcc --show-hosts
  • 显示帮助:
bash
distcc --help
  • 显示版本:
bash
distcc --version

ant · Apache Ant ​

用于构建和管理基于 Java 的项目的工具。 更多信息:https://ant.apache.org/manual/index.html。

  • 用默认的构建文件 build.xml 构建一个项目:
bash
ant
  • 使用 build.xml 以外的构建文件构建项目:
bash
ant {{[-f|-buildfile]}} {{构建文件.xml}}
  • 打印该项目可能的目标信息:
bash
ant {{[-p|-projecthelp]}}
  • 打印调试信息:
bash
ant {{[-d|-debug]}}
  • 执行所有不依赖失败目标的目标:
bash
ant {{[-k|-keep-going]}}

arduino · Arduino Studio - 为 Arduino 平台准备的集成开发环境 ​

更多信息:https://github.com/arduino/Arduino/blob/master/build/shared/manpage.adoc。

  • 构建一个草稿:
bash
arduino --verify {{路径/到/文件.ino}}
  • 构建草稿,并上传至设备:
bash
arduino --upload {{路径/到/文件.ino}}
  • 构建草稿,并上传至带有一个 Atmega328p CPU 的 Arduino Nano(连接到端口 /dev/ttyACM0):
bash
arduino --board {{arduino:avr:nano:cpu=atmega328p}} --port {{/dev/ttyACM0}} --upload {{路径/到/文件.ino}}
  • 将首选项 名称 设定为特定 值:
bash
arduino --pref {{名称}}={{值}}
  • 构建草稿,将输出保存在输出文件夹,同时重复利用该文件夹中,在此之前已经输出的文件:
bash
arduino --pref build.path={{路径/到/输出_文件夹}} --verify {{路径/到/文件.ino}}
  • 保存任意(修改过的)首选项到 preferences.txt:
bash
arduino --save-prefs
  • 安装最新的 SAM 开发板:
bash
arduino --install-boards "{{arduino:sam}}"
  • 安装 Bridge 和 Servo 库:
bash
arduino --install-library "{{Bridge:1.0.0,Servo:1.2.0}}"

adscript · 用于 Adscript 文件的编译器 ​

更多信息:https://github.com/Amplus2/Adscript。

  • 将一个文件编译为一个对象文件:
bash
adscript --output {{路径/到/文件.o}} {{路径/到/输入文件.adscript}}
  • 编译并链接一个文件到一个独立的可执行文件:
bash
adscript --executable --output {{路径/到/文件}} {{路径/到/输入文件.adscript}}
  • 将文件编译成 LLVM IR 而不是本地机器码:
bash
adscript --llvm-ir --output {{路径/到/文件.ll}} {{路径/到/输入文件.adscript}}
  • 将一个文件交叉编译为一个其他 CPU 架构或操作系统的目标文件:
bash
adscript --target-triple {{i386-linux-elf}} --output {{路径/到/文件.o}} {{路径/到/输入文件.adscript}}

专用开发环境 ​

javac · Java 程序编译器 ​

更多信息:https://docs.oracle.com/en/java/javase/25/docs/specs/man/javac.html。

  • 编译一个 .java 文件:
bash
javac {{文件名.java}}
  • 编译多个 .java 文件:
bash
javac {{文件名1.java 文件名2.java 文件名3.java ...}}
  • 编译当前目录内所有 .java 文件:
bash
javac {{*.java}}
  • 编译一个 .java 文件并将生成的 class 字节码文件放入一个指定目录:
bash
javac -d {{路径/到/目录}} {{文件名.java}}

示例整理自 tldr-pages,作者为 tldr-pages team and contributors,遵循 CC BY 4.0。

继续阅读