这个 Linux 命令有什么作用?

这个 Linux 命令有什么作用?
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将编译和链接的输出放入指定文件中

相关内容