g++ -Wall -I/usr/local/include/thrift *.cpp -lthrift -o something
这是来自 Apache Thrift 网站。
另外 -I/usr 应该是 -I /usr 吗?
答案1
这是命令的细分。首先是原来的命令,供参考
g++ -Wall -I/usr/local/include/thrift *.cpp -lthrift -o something
现在,进行细分。
g++
这是实际的命令命令,g++
。这是正在执行的程序。这是手册页中的内容:
gcc - GNU 项目 C 和 C++ 编译器
这是一个用 C++ 和 C 编写的程序的编译器。基本上,它接受 C 或 C++ 代码并将其转换为程序。
-Wall
这部分使其在编译时显示所有警告。 (警告所有)
-I/usr/local/include/thrift
这部分告诉g++
我们使用/usr/local/include/thrift
作为从中获取头文件的目录。还有关于是否在 I 后面加空格的问题。无论哪种方式你都可以做到。选项(选项是命令中-
符号后面的内容。-Wall
并且-I
是选项)的解析方式允许您是否放置空格。这取决于您的个人喜好。
*.cpp
这部分将.cpp
当前目录中的每个文件传递给g++
命令。
-lthrift
这也可以-l thrift
。它告诉您在链接时g++
搜索库。thrift
-o something
这告诉它当所有内容都被编译以将可执行文件放入文件中时something
。
答案2
一般来说,您应该在命令中查找命令的文档手册页: man g++
。对于 GNU 软件(例如 GCC),您通常会在以下位置找到更完整的文档:信息格式,或在 HTML 中软件主页。
C(和 C++)编译器有一种有点特殊的语法,它不遵循选项的常见约定(选项位于操作数之前,选项与其参数之间有一个可选空格,...)。后面的空格-I
实际上是可选的,但-Wall
必须是一个单词。
以下是该命令的快速概述(有关详细信息,请参阅文档):
g++
运行 C++ 编译器-Wall
对可疑代码发出警告(-Wall
实际上仅意味着重要警告,而不是所有可能的警告)-I/usr/local/include/thrift
在该目录中查找包含文件(#include
指令)*.cpp
编译这些文件-lthrift
与该库的链接(此搜索libthrift.a
)。请注意,-l
必须位于您正在编译的文件之后,因为-l
意味着“如果此时有任何未定义的符号,请在特定库中查找定义”-o something
将编译和链接的输出放入指定文件中