C++ -lstdc和#x2B之间的差异+;和-lstdc++;11

C++ -lstdc和#x2B之间的差异+;和-lstdc++;11,c++,c++11,gnu,C++,C++11,Gnu,通过调用编译器标志“-lstdc++”调用哪些标准? 与“-lstdc++11”一样,将调用c++11标准,并且可以通过“-std=c++11”调用该标准。标记-l不会更改标准一致性,它用于指定要链接的库 因此,-lstdc++将与名为libstdc++.a或libstdc++.So的库链接。在我的系统上,可以在/usr/lib/x86_64-linux-gnu/libstdc++.so.6找到该库,但在您的系统上通常会有所不同 这与指定类似于-lSDL的内容(链接到libSDL.so)或指定-

通过调用编译器标志“-lstdc++”调用哪些标准?
与“-lstdc++11”一样,将调用c++11标准,并且可以通过“-std=c++11”调用该标准。

标记
-l
不会更改标准一致性,它用于指定要链接的库

因此,
-lstdc++
将与名为
libstdc++.a
libstdc++.So的库链接。在我的系统上,可以在
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
找到该库,但在您的系统上通常会有所不同

这与指定类似于
-lSDL
的内容(链接到
libSDL.so
)或指定
-lpng
(链接到
libpng.so
)没有什么不同


如果您想使用C++标准的某个版本,请使用<代码> -STD< /Cord>选项(如<代码> -STD= C++ 11 )。这还将在中链接正确的库,因此您无需执行任何其他操作(例如使用任何

-l
选项)。

标记
-l
不会更改标准一致性,它用于指定要链接的库

因此,
-lstdc++
将与名为
libstdc++.a
libstdc++.So的库链接。在我的系统上,可以在
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
找到该库,但在您的系统上通常会有所不同

这与指定类似于
-lSDL
的内容(链接到
libSDL.so
)或指定
-lpng
(链接到
libpng.so
)没有什么不同


如果您想使用C++标准的某个版本,请使用<代码> -STD< /Cord>选项(如<代码> -STD= C++ 11 )。这还将在中链接正确的库,因此您不需要执行任何其他操作(例如使用任何

-l
选项)。

此处不指定编译器,但假设它是
clang++
g++
或类似的东西

然后,标志
-l
仅指定链接时应搜索库
。此搜索将包括搜索目录的标准列表以及可能已添加到库路径的其他目录

因此,标志
-lstdc++
仅表示应在链接时搜索库。对于编译器认为编译的C++版本,<<强>没有作用。< /P> 相反,标志
-std=c++
通常充当编译器的开关,该编译器:

    表示使用中的C++版本;<李>
  • 自动将相应的库和包含路径添加到搜索路径

此处不指定编译器,但我们假设它是
clang++
g++
或类似的东西

然后,标志
-l
仅指定链接时应搜索库
。此搜索将包括搜索目录的标准列表以及可能已添加到库路径的其他目录

因此,标志
-lstdc++
仅表示应在链接时搜索库。对于编译器认为编译的C++版本,<<强>没有作用。< /P> 相反,标志
-std=c++
通常充当编译器的开关,该编译器:

    表示使用中的C++版本;<李>
  • 自动将相应的库和包含路径添加到搜索路径

但在我的例子中,即使我添加了“-std=c++11”,但包含的库是“-lstdc++”而不是“-lstdc++11”。@geek:那很好,这只是库的名称。该编译器也称为
g++
,您不需要使用名为
g++11
@geek的其他编译器。当然,该库仍然称为
stdc++
。。。你可能会发现它实际上是文件系统上的一个不同的库,但在我的例子中,即使我添加了“-std=c++11”,但包含的库是“-lstdc++”而不是“-lstdc++11”。@geek:那很好,这只是库的名称。该编译器也称为
g++
,您不需要使用名为
g++11
@geek的其他编译器。当然,该库仍然称为
stdc++
。。。不过,您可能会发现它实际上是文件系统上的另一个库