gcc相关内容

带电围栏库的gcc不生效

我写了一段动态分配时出现内存问题的片段;使用 -lefence 选项编译时,似乎没有任何效果.这是代码段: int main(int argc, char *argv[]){int *a = (int *)malloc(2*sizeof(int));for(int i = 0; i ..
发布时间:2022-01-24 23:24:39 服务器开发

在 Debian 上安装 gcc 4.8

我想开始尝试一些较新的 C++11 功能,似乎最好的支持是 gcc 4.8,而 Squeeze 附带 4.4.5. 但是,我不想对我当前的设置造成任何“损害".让 both 版本的 gcc 并排运行的最佳方法是什么?我主要担心大量依赖项,将它们全部纳入我当前的系统可能会使其不稳定. 有没有人设法做到这一点,涉及的步骤是什么? 如果做不到这一点,我可能会创建一个 VM 并在其下运行 ..
发布时间:2022-01-24 22:46:14 其他开发

在 docker 镜像中编译时的 mtune 和 march

在 docker 镜像中编译时(即在 dockerfile 中),march 和 mtune 应该设置为什么? 请注意,这不是在正在运行的容器中编译,而是在构建容器时进行编译(例如,在运行映像时从源代码构建工具). 例如,目前当我运行 docker build 并从源代码安装 R 包时,我得到了负载(可能是 g++/gcc/f95 ...): g++ -std=gnu++14 [.. ..
发布时间:2022-01-24 21:13:21 其他开发

25:警告:初始化元素不是常量表达式

GCC 在尝试编译时给我以下警告消息: las.c:13:18: 警告:初始化元素不是常量表达式 [默认启用]常量 int ROWS = pow (2, MESH_K); 与此相关的代码部分是: #define MESH_K 10#define BUFF_SIZE 30常量 int ROWS = pow (2, MESH_K); 我需要在后面的代码中同时使用 MESH_K 和 ROWS. ..
发布时间:2022-01-23 23:35:20 其他开发

为什么 C 不允许从 char ** 到 const char *const * 的隐式转换(而 C++ 允许)?

我知道从 char ** 到 const char ** 的隐式转换无法完成以及为什么,以及到 char *const *有效.请参阅底部的解释链接. 除了一件特定的事情之外,这一切都是有意义的.所以我有以下代码: #include 空白打印(常量字符*常量*参数){printf("%s\n", 参数[0]);}整数主要(int argc,char **argv){打印( ..
发布时间:2022-01-23 23:32:17 C/C++开发

返回类型为 void 的函数末尾是否需要空白返回语句?

关于 SO 的大多数问题都涉及非 void 返回类型,但我们正在为此展开一场激烈的战争,并想了解社区的想法. void DoSomething(){返回;//这个需要吗?} 来自 this 讨论,看起来未定义行为的问题涉及非 void 返回类型的函数.void 返回类型是否具有相同的未定义行为,还是仅在非 void 返回函数中? 我担心的是,这最终会成为一种糟糕的编码风格,没有任何理由可 ..
发布时间:2022-01-23 21:15:54 C/C++开发

C++:什么 GNU G++ 参数?

可能重复: C/C++ 编译器的最佳编译器警告级别? GCC 有数以千计的选项来添加更多警告;我希望 -Wall -Wextra -pedantic 包含所有有用的,但现在我遇到了 -Woverloaded-virtual 这对我来说真的很好. 您还使用或推荐哪些其他 G++ 参数? 解决方案 不是完全相同的类别,但我总是用 -Werror 编译以将警告标记为错误.很有用. ..
发布时间:2022-01-23 21:15:13 C/C++开发

GCC 命令行参数挑剔

GCC 可以对它接受参数的顺序非常挑剔: # 有效.g++ Foo.cpp -L.-一世.-lBar -o Foo# 链接器错误.g++ -o Foo -I.-L.-lBar Foo.cpp 具体来说,命令行选项的排序要求是什么? 解决方案 库是根据需要的符号按需加载的,因此提供其他东西所需符号的库必须遵循其他东西.这是历史性的;可以说,现代系统应该自动解析符号,明智地处理循环(这就是 ..
发布时间:2022-01-23 21:14:30 其他开发

double 和 ffast-math 上的自动矢量化

为什么必须使用 -ffast-math 和 g++ 来实现使用 doubles 的循环向量化?我不喜欢 -ffast-math 因为我不想失去精度. 解决方案 使用 -ffast-math 不一定会丢失精度.它只影响NaN、Inf等的处理以及操作执行的顺序. 如果您不希望 GCC 重新排序或简化计算的特定代码段,您可以使用 asm 语句将变量标记为正在使用. 例如,以下代码对 ..
发布时间:2022-01-23 21:14:08 其他开发

如何使用 GCC 4.8 配置 libstdc++?

不久前,我决定升级到 GCC 4.8,以便尽早开始使用一些 c++11 功能.不过,我有点走神了,直到几天前的一个项目才真正使用任何新功能(新编译器似乎工作正常,但这可能只是因为我没有使用任何新功能.) 在这个新项目中,当我使用 =std=c++11 标志编译时,我没有遇到任何问题.但是,在运行时,我收到错误: ./main:/usr/lib/i386-linux-gnu/libstd ..
发布时间:2022-01-23 21:13:25 C/C++开发

如何告诉 MinGW 链接器不要导出所有符号?

我正在使用 MinGW 工具链构建一个 Windows 动态库. 为了构建这个库,我静态链接到提供 API 的其他 2 个库,并且我有一个 .def 文件,我在其中编写了我想在我的库中导出的唯一符号. 问题是 GCC 正在导出所有符号,包括我链接到的库中的符号.有没有办法告诉链接器只导出 def 文件中的符号? 我知道有选项 --export-all-symbols 但似乎没有相 ..
发布时间:2022-01-23 21:11:27 C/C++开发

GCC 构建问题 (#include_next limits.h)

当我尝试时 $ make 依赖 -f gcc.mak 我的 Ubuntu 机器上的一个中间件我得到了这个 /usr/include/../include/limits.h:125:26: 错误:没有搜索limits.h的包含路径 这是limits.h:125周围的内容: /* 获取编译器的limits.h,它定义了几乎所有的ISO 常量.我们把这个#include_next 放在双重包含 ..
发布时间:2022-01-23 21:09:27 服务器开发

默认为 gcc 添加一些标志(最好使用 specs 文件)

我想让我的 gcc 总是默认添加一些标志,有没有干净的方法来做到这一点? 基本上,我每次调用 gcc 时都会传递一些标志,例如(但不限于)-g(以便它具有调试信息). 有几种解决方法,但它们都很丑: 别名g++=...,但我不喜欢这种做法; 写一个环绕g++的脚本,类似1; ... 我宁愿只修改规范文件,以便一切顺利. 解决方案 运行strace gcc |gr ..
发布时间:2022-01-23 21:08:03 其他开发