linux中gcc/g++编译时报错 fatal error: codecvt: No such file or directory
2024-06-13
175
问题描述
最近在centos中g++编译一个C++的源码时,遇到报“fatal error: codecvt: No such file or directory”的错误。查阅codecvt资料后发现,codecvt为c++标准库头文件(示例代码),其起到封装字符串的转换,包括宽和多字节,从一种编码到另一种的作用。
解决方法
从网上的一些帖子上看到,codecvt库只有C++11及以上的标准才支持,需要在编译时gcc或g++命令后添上“-std=c++11”,或在makefile文件中修改,添加命令使gcc/g++默认支持C++11标准,试验后发现仍然报错。然后,看到老外的一篇帖子,只有gcc 5.0以上的版本才能完全支持C++11标准,我看了下我的gcc/g++版本是4.8.5版本,因此尝试升级gcc。
整理了一下gcc、libc、libstdc++的关系,大概了解了gcc,g++与 libstdc++的关系。
参考gcc 5.4 默认不支持c++11,可知gcc支持C++11,但默认不支持。所以要在编译时加上-std=c++11 或者 -std=c++0x才可以,因此选择升级gcc6。
升级过程请参照另一篇帖子:https://www.cfnotes.com/archives/322
升级后编译就不再报错了。
赞一波!1
相关文章
- PHP 导出 Excel 报错: Formula Error: An unexpected error occurred
- VSCode 插件 Dyno File Utils 脱离鼠标管理文件
- linux中Qt工程编译报错: error: 找不到 -lGL
- React Error: Exceeded timeout of 5000 ms for a test. 错误
- 如何判断file input的文件来自存储还是相机?
- linux编译报错:/usr/include/c++/7/cstdlib:41:10: fatal error: bits/c++config.h: No such file or directory
- c++运行时报错误:there is a mismatch in alloc and dealloc
- Linux下编译libxml源码时,报错:/usr/include/x86_64-linux-gnu/bits/fcntl2.h:50:4: error: call to '__open...
- ENOENT: no such file or directory, lstat 'C:\Users\33612\AppData\Roaming\npm'
- git push时报remote rejected shallow update not allowed 的问题
- Linux编译内核模块时报: linux/scripts/recordmcount: No such file or directory
- 编译Linux内核模块时报:WARNING: Symbol version dump "Module.symvers" is missing.
- Ubuntu Linux中apt/dpkg安装报错:Sub-process /usr/bin/dpkg returned an error code (1)
- .NET8站点报错:HTTP Error 500.31 - Failed to load ASP.NET Core runtime
- Qt编译报错:error: LNK1181: cannot open input file 'debugmain.obj'
- QT编译时报错 error: lnk1158: cannot run 'rc.exe'
- C++编译报错:fatal error: speex/speex_resampler.h: No such file or directory
- Qt编译C++报错:error: 'nullptr' was not declared in this scope
- linux中Qt编译时报错:qwt_dial.h: No such file or directory
- C++编译报错:fatal error: pcap.h: No such file or directory
文章评论
评论问答