gcc相关内容
我写了一段动态分配时出现内存问题的片段;使用 -lefence 选项编译时,似乎没有任何效果.这是代码段: int main(int argc, char *argv[]){int *a = (int *)malloc(2*sizeof(int));for(int i = 0; i
..
目前,我使用以下命令从 openssl 包编译 openssl 1.0.2f: $ tar xzf openssl-1.0.2e.tar.gz$ cd openssl-1.0.2e$export 前缀={前缀}$./Configure -DOPENSSL_NO_HEARTBEATS --openssldir=$PREFIX 共享操作系统/编译器:${TARGET}$ 制作 这是 Beagleb
..
我正在使用 Debian(Python-2.7.3 附带),尝试从源代码编译 Python-2.7.6,以便与 mod_wsgi 和 Apache 一起使用. 根据众多答案,显然您必须在编译 mod_wsgi 使用时使用 --enable-shared. 按照以下步骤操作: ./configure --enable-shared --prefix=/usr/local/bin/pyt
..
我想开始尝试一些较新的 C++11 功能,似乎最好的支持是 gcc 4.8,而 Squeeze 附带 4.4.5. 但是,我不想对我当前的设置造成任何“损害".让 both 版本的 gcc 并排运行的最佳方法是什么?我主要担心大量依赖项,将它们全部纳入我当前的系统可能会使其不稳定. 有没有人设法做到这一点,涉及的步骤是什么? 如果做不到这一点,我可能会创建一个 VM 并在其下运行
..
在 docker 镜像中编译时(即在 dockerfile 中),march 和 mtune 应该设置为什么? 请注意,这不是在正在运行的容器中编译,而是在构建容器时进行编译(例如,在运行映像时从源代码构建工具). 例如,目前当我运行 docker build 并从源代码安装 R 包时,我得到了负载(可能是 g++/gcc/f95 ...): g++ -std=gnu++14 [..
..
我有这样的代码: $ cat test.c#include 类型定义结构{常量 int x;} SX;静态 SX mksx(void){返回 (SX) { .x = 10 };}无效 fn(无效){SX SX;而((sx = mksx()).x != 20){printf("愚蠢的代码!");}} 以及关于其正确性的2个意见: $ for i in gcc clang;做
..
使用以下代码时,我对链接器错误感到困惑: //static_const.cpp -- 完整代码#include 结构元素{静态常量 int 值 = 0;};int main(int argc, char *argv[]) {std::vector五(1);std::vector::iterator it;它 = v.begin();返回它->值;} 但是,这在链接时会失败—
..
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.
..
..
我知道从 char ** 到 const char ** 的隐式转换无法完成以及为什么,以及到 char *const *有效.请参阅底部的解释链接. 除了一件特定的事情之外,这一切都是有意义的.所以我有以下代码: #include 空白打印(常量字符*常量*参数){printf("%s\n", 参数[0]);}整数主要(int argc,char **argv){打印(
..
关于 SO 的大多数问题都涉及非 void 返回类型,但我们正在为此展开一场激烈的战争,并想了解社区的想法. void DoSomething(){返回;//这个需要吗?} 来自 this 讨论,看起来未定义行为的问题涉及非 void 返回类型的函数.void 返回类型是否具有相同的未定义行为,还是仅在非 void 返回函数中? 我担心的是,这最终会成为一种糟糕的编码风格,没有任何理由可
..
可能重复: C/C++ 编译器的最佳编译器警告级别? GCC 有数以千计的选项来添加更多警告;我希望 -Wall -Wextra -pedantic 包含所有有用的,但现在我遇到了 -Woverloaded-virtual 这对我来说真的很好. 您还使用或推荐哪些其他 G++ 参数? 解决方案 不是完全相同的类别,但我总是用 -Werror 编译以将警告标记为错误.很有用.
..
GCC 可以对它接受参数的顺序非常挑剔: # 有效.g++ Foo.cpp -L.-一世.-lBar -o Foo# 链接器错误.g++ -o Foo -I.-L.-lBar Foo.cpp 具体来说,命令行选项的排序要求是什么? 解决方案 库是根据需要的符号按需加载的,因此提供其他东西所需符号的库必须遵循其他东西.这是历史性的;可以说,现代系统应该自动解析符号,明智地处理循环(这就是
..
为什么必须使用 -ffast-math 和 g++ 来实现使用 doubles 的循环向量化?我不喜欢 -ffast-math 因为我不想失去精度. 解决方案 使用 -ffast-math 不一定会丢失精度.它只影响NaN、Inf等的处理以及操作执行的顺序. 如果您不希望 GCC 重新排序或简化计算的特定代码段,您可以使用 asm 语句将变量标记为正在使用. 例如,以下代码对
..
不久前,我决定升级到 GCC 4.8,以便尽早开始使用一些 c++11 功能.不过,我有点走神了,直到几天前的一个项目才真正使用任何新功能(新编译器似乎工作正常,但这可能只是因为我没有使用任何新功能.) 在这个新项目中,当我使用 =std=c++11 标志编译时,我没有遇到任何问题.但是,在运行时,我收到错误: ./main:/usr/lib/i386-linux-gnu/libstd
..
以下代码: #include #include 使用命名空间标准;constexpr int N = 1000000;constexpr int f(int x) { return x*2;}typedef 数组一个;模板struct F { static constexpr A f() { return A{{ ::f(i)...
..
我正在使用 MinGW 工具链构建一个 Windows 动态库. 为了构建这个库,我静态链接到提供 API 的其他 2 个库,并且我有一个 .def 文件,我在其中编写了我想在我的库中导出的唯一符号. 问题是 GCC 正在导出所有符号,包括我链接到的库中的符号.有没有办法告诉链接器只导出 def 文件中的符号? 我知道有选项 --export-all-symbols 但似乎没有相
..
..
当我尝试时 $ make 依赖 -f gcc.mak 我的 Ubuntu 机器上的一个中间件我得到了这个 /usr/include/../include/limits.h:125:26: 错误:没有搜索limits.h的包含路径 这是limits.h:125周围的内容: /* 获取编译器的limits.h,它定义了几乎所有的ISO 常量.我们把这个#include_next 放在双重包含
..
我想让我的 gcc 总是默认添加一些标志,有没有干净的方法来做到这一点? 基本上,我每次调用 gcc 时都会传递一些标志,例如(但不限于)-g(以便它具有调试信息). 有几种解决方法,但它们都很丑: 别名g++=...,但我不喜欢这种做法; 写一个环绕g++的脚本,类似1; ... 我宁愿只修改规范文件,以便一切顺利. 解决方案 运行strace gcc |gr
..