开发环境、代码编辑与项目生成命令 · 编译 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 --versiong++ · 编译 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++ --versionclang · 编译 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 --versionclang++ · 编译 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++ --versiondistcc · 与 distccd 搭配使用的分布式 C/C++/ObjC 编译客户端
- 使用类似
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 --versionant · 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 文件的编译器
- 将一个文件编译为一个对象文件:
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。
继续阅读
- 文件与文本处理完整实践与解答
- 文件与文本处理上手与对象
- 文件与文本处理任务与配置