引言:前文部分可先查看另一篇文章 如何通过命令行编译并运行程序之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/Desktopcd ../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