引言:前文部分可先查看另一篇文章 如何通过命令行编译并运行程序之Windows版本
0x00 安装 gcc 编译器
通过键盘组合键 command + 空格
可以打开 Spotlight 进行搜索,输入 Terminal 可以打开macOS下的终端。打开之后输入 gcc --version
可以查看是否安装了 gcc 编译器,如果没有安装的话,系统会自动弹出下载安装 Command Line Tools 对话框。
在安装之后输入 gcc --version
可以查看安装的 gcc 信息。
> gcc --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 11.0.0 (clang-1100.0.33.8)
Target: x86_64-apple-darwin19.0.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
0x01 命令行的基本使用
ls
查看文件及文件夹列表ls
默认方式查看当前目录下的文件及文件夹列表ls -a
查看当前目录下所有文件及文件夹列表(包括隐藏文件)ls -l
列表形式查看当前目录下的文件及文件夹列表ls -la
列表形式查看当前目录下所有文件及文件夹列表(包括隐藏文件)ls -Slh
列表形式按文件从大到小排列查看当前目录下文件及文件夹列表ls ~/Desktop
在ls
命令后面加上目录名称可查看此目录下的文件及文件夹内容。当然ls
后面依旧可以使用上路控制开关,如-a
,-la
等。
cd
切换目录目录的使用有两种使用方法,一种是相对路径,一种是绝对路径。
相对路径是与当前目录直接相关,如当前目录为
/Users/ismdeep/Desktop
那么/Users/ismdeep/Documents
就相对为../Documents
(注:..
表示上一级目录,.
表示当前目录。)又例如:当前目录为
/Users/ismdeep/Desktop
那么/Users/ismdeep/Desktop/tmp
就相对为./tmp
或tmp
绝对路径则与当前目录无关。直接从根目录开始按层级往下写则为绝对路径。例如:
/Users/ismdeep/Desktop
cd ../Documents
相对路径切换目录方式。切换至上级目录下的Documents
子目录。cd tmp
相对路径切换目录方式。切换至当前目录下的tmp
子目录cd /Users/ismdeep/Documents
绝对路径切换目录方式。切换至/Users/ismdeep/Documents
mkdir
创建目录mkdir tmp
在当前目录下创建名为tmp
的子目录。clear
清空屏幕内容gcc
编译程序
0x02 编写第一个程序
- 打开 Terminal 或者 iTerm2 等终端程序。(笔者非常推荐使用 iTerm2 终端程序,读者可自行通过网上教程进行安装配置 iTerm2 + zsh + oh-my-zsh 环境。《iTerm2 + Oh My Zsh 打造舒适终端体验》)
cd ~/Desktop
切换工作目录至桌面。(当然你也可以切换到其他目录)mkdir codes
新建一个名为codes
的空白目录。cd codes
切换进这个codes
目录。touch main.c
新建名为main.c
的文件。- 通过代码编辑器打开
codes
目录下的main.c
文件。(代码编辑器有非常多,比如:vim, sublime text 3, vscode等。) gcc main.c -o main
通过gcc
将main.c
编译成可执行程序main
../main
执行可执行程序main
0x03 gcc/g++/c++
编译器命令详解。
gcc
用来编译 C 源程序,g++
和 c++
用来编译 C++ 源程序。有些系统上 g++
和 c++
其实是同一个。而这三个命令使用方式均是一样的。下面只介绍 gcc
的,另外两个依此类推。
gcc main.c
这是最简单的编译方式,编译main.c
这个源程序,编译成功之后会在当前目录下生成一个名为a.out
的可执行程序。gcc main.c -o main
在最简单的编译方式基础上增加了-o main
表示编译成功后生成名为main
的可执行程序。gcc -g main.c -o main
编译时生成 debug 有关的程序信息。gcc main.c -I./include -o main
编译时将./include
文件夹加入头文件搜索目录。如./include
目录下有util.h
文件,则源代码中可以直接写#include <util.h>
gcc main.c -DONLINE_JUDGE -o main
编译时加入ONLINE_JUDGE
宏定义。目前几乎所有的在线测评系统都会使用-DONLINE_JUDGE
编译时宏定义。gcc -Wall main.c -o main
编译时输出所有的错误和警告。gcc -std=c99 main.c -o main
编译时指定使用的语言标准。可以有-std=c++11
,-std=c89
,-std=c99
,-std=c11