-lsdc++和-lsdc++11之间的差异

Difference between -lstdc++ and -lstdc++11

本文关键字:之间 -lsdc++11 -lsdc++      更新时间:2023-10-16

哪些标准可以通过调用编译器标志"-lsdc++"来调用?与"-lsdc++11"一样,c++11标准也会被调用,"-std=c++11"也可以调用同样的标准。

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

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

这与指定与libSDL.so链接的-lSDL或与libpng.so链接的-lpng没有什么不同。

如果要使用特定版本的C++标准,请使用-std选项(如-std=c++11)。这也将在中链接正确的库,因此您不需要执行任何其他操作(例如使用任何-l选项)。

这里没有指定编译器,但假设它是clang++g++或类似的编译器。

然后标志CCD_ 15简单地指定在链接时应当搜索库CCD_。此搜索将包括搜索目录的标准列表以及可能已添加到库路径中的其他目录。

因此,标志CCD_ 17简单地指示应当在链接时间搜索库。它对编译器认为正在编译的c++版本没有任何影响。

相反,标志-std=c++通常充当编译器的开关,该编译器:

  • 表示正在使用的c++版本
  • 自动将相应的库和包含路径添加到搜索路径