gcc、g++、cmake编译c++11问题

本文介绍如何在Ubuntu 16.04上使用gcc/g++ 5.4.0版本正确编译C++11代码。通过在编译指令中添加`-std=c++11`选项或在CMakeLists.txt文件中加入`add_definitions(-std=c++11)`来实现。

Ubuntu版本为:16.04, gcc/g++版本为:5.4.0,无法编译c++11,解决方法如下:

gcc、g++在编译指令中加: -std=c++11

如:gcc test.cpp -o test -std=c++11

cmake编译在CMakeLists.txt文件中加一行:add_definitions(-std=c++11)


### 如何使用 g++11 编译 C++17 代码 为了确保能够成功编译支持 C++17 的代码,需要设置合适的编译器标志以及环境配置。以下是详细的说明: #### 设置编译选项 当使用 `g++` 来编译 C++17 标准的代码时,可以通过 `-std=c++17` 或者 `-std=gnu++17` 参数来指定标准版本[^1]。前者表示严格遵循 ISO C++17 标准,而后者则允许 GNU 扩展。 例如,在命令行中可以直接运行如下命令: ```bash g++ -std=c++17 -o program_name source_file.cpp ``` 此命令告诉编译器按照 C++17 标准解析源文件并生成可执行程序[^2]。 #### 配置构建工具链中的目标属性 对于更复杂的项目结构(通常涉及 CMake),可以在 CMakeLists.txt 文件中通过特定指令声明所需的 C++ 版本和其他依赖项。具体来说,应该利用 `target_compile_features()` 函数或者直接设定全局变量 `CMAKE_CXX_STANDARD`[^3]。 下面是一个简单的例子展示如何定义这些参数: ```cmake set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) add_executable(example example.cpp) # 如果某些头文件路径或链接库特殊,则需额外增加它们到对应部分下 target_include_directories(example PRIVATE ${PROJECT_SOURCE_DIR}/includes) target_link_libraries(example PRIVATE some_library) ``` 上述脚本片段设置了整个项目的默认 C++ 标准为 17,并关闭了可能干扰的标准扩展功能开关;同时也展示了怎样向单个目标追加私有的包含目录与关联动态/静态库的方法。 #### 解决常见错误提示 有时即使指定了正确的编译期标记仍会出现诸如 `'float.h' file not found` 这样的警告信息。这种情况下建议更换底层使用的主机端 C/C++ 工具链条路至 GCC/G++ 系列产品替代 Clang++ ,因为可能是由于不同实现间兼容性差异所引发的问题 。另外也可以考虑借助 Windows Subsystem for Linux(WSL) 平台配合 Visual Studio Code 中 Remote Development 插件组来进行跨平台开发调试工作流程优化操作体验效果更好一些 。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值