调用编译器标志“-lstdC++”调用哪个标准? 与“-lstdC++ 11”一样,C++ 11标准被调用,同样的可以被“-std = C++ 11”调用。-lstdC++和-lstdC++之间的区别11
1
A
回答
2
-l
标志不会更改标准一致性,它用于指定要链接的库。
因此,-lstdc++
将与名为libstdc++.a
或libstdc++.so
的库链接。在我的系统上,该库可以在/usr/lib/x86_64-linux-gnu/libstdc++.so.6
找到,但是它在系统上通常会有所不同。
这无异于指定类似-lSDL
,与libSDL.so
链接,或指定-lpng
,这与libpng.so
链接不同。
如果要使用某个版本的C++标准,请使用-std
选项(如-std=c++11
)。这也将链接正确的库,所以你不需要做任何事情(如使用任何-l
选项)。
2
这里没有指定编译器,但我们假设它是clang++
或g++
或类似的东西。
然后,标志-l<library>
只是指定链接时应搜索库<library>
。该搜索将包括搜索目录的标准列表以及可能已添加到库路径的其他搜索目录。
因此标志-lstdc++
只是表示应在链接时搜索库。它对编译器应该认为它正在编译的C++版本没有任何影响。
相反,标志-std=c++
通常充当切换到编译器:
- 表示C++使用的版本;
- 自动地使相应的库和包含路径被添加到搜索路径
相关问题
- 1. ld:无法找到-lstdC++
- 2. C++ 11 lambda:transform和for_each之间的区别
- 3. pkcs#11和pkcs#12之间的区别?
- 4. 在Xcode中找不到-lstdC++的库
- 5. 在/ usr /斌/劳工处:找不到-lstdC++
- 6. Xcode 4.4找不到10.6 sdk库-lstdC++
- 7. -lstdC++到LIBADD选项剥离libtool存档
- 8. 为什么我必须使用-lstdC++ fs?
- 9. 使用g ++链接失败搜索-lstdC++
- 10. -std = C++ 11和-std = gnu ++ 11之间有什么区别?
- 11. ActionBarSherlock和Android的ObjectAnimator上的NineOldAndroids之间的区别<11
- 12. 之间的〜/和的区别../
- 13. '#','%'和'$'之间的区别
- 14. {!!之间的区别!!}和{{}}
- 15. '+ ='和'= +'之间的区别?
- 16. “。+”和“。+?”之间的区别
- 17. .eq之间的区别。和==
- 18. #。/和#之间的区别。 ./
- 19. !=和!之间的区别==
- 20. “%〜dp0”和“。\”之间的区别?
- 21. | =和^ = css之间的区别
- 22. 之间的区别。和#
- 23. ==和case之间的区别?
- 24. “**/* /”和“** /”之间的区别?
- 25. jQuery - '。'之间的区别和“#”
- 26. “?1”和“?”之间的区别
- 27. `%in%`和`==`之间的区别
- 28. fmod和%之间的区别
- 29. 之间的区别:+和:+
- 30. 使用-lstdC++ fs选项后使用GCC6时的:: filesystem linker错误
但即使添加我的情况下“-std = C++ 11”,但是这是越来越包括的是“库 - lstdC++“而不是”-lstdC++ 11“。 – geek
@geek:没关系,那只是图书馆的名字。编译器也被称为'g ++',你不需要使用一个名为'g ++ 11'的不同编译器。 –
@geek当然,这个库仍然被称为'stdC++'...你可能会在文件系统上发现它实际上是一个不同的库 – donkopotamus