问题标签 [gcc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
79618 浏览

c++ - 静态变量初始化顺序

C++ 保证编译单元(.cpp 文件)中的变量按声明顺序进行初始化。对于编译单元的数量,此规则分别适用于每个编译单元(我的意思是类之外的静态变量)。

但是,变量的初始化顺序在不同的编译单元中是未定义的。

我在哪里可以看到关于 gcc 和 MSVC 的这个顺序的一些解释(我知道依赖它是一个非常糟糕的主意 - 这只是为了了解我们在迁移到新的 GCC 主要和不同操作系统时可能遇到的遗留代码问题) ?

0 投票
1 回答
1635 浏览

gcc - 用于 MIPS、3.4.4 或 4.3.2 的 gcc?

我们对 gcc 3.3.2(用于 MIPS)进行了许多更改,以支持我们正在开发的嵌入式系统的变幻莫测。gcc 3.4 及更高版本似乎大大改进了 MIPS 代码生成,因此我计划将我们的更改向前移植。问题是我应该针对哪个 gcc 版本:3.4.4 还是直接到 4.3.2?移植更改需要大量工作,我不想重复两次并选择更好的结果。

Linux-MIPS 项目仍然推荐 gcc 3.4.4,MIPS Technologies 维护了一个基于 gcc 3.4.4 的修改后的 SDE 工具链。虽然我的嵌入式系统没有运行 Linux,但我尊重他们的专业知识。

从我读过的内容来看,MIPS 后端并没有受益于 4.x 中更高级别的优化,实际上产生的代码比 3.4.4 慢。任何人都可以确认或否认这一点吗?

0 投票
3 回答
2021 浏览

c - Windows XP 上的 GCC 编译器错误

我在尝试使用 GCC 编译 C 程序时遇到了一个完全奇怪的错误。这是我正在使用的批处理文件:

以下是我在尝试运行此代码时收到的错误消息。所有文件都在同一个目录中,是的 PATH 变量设置正确:

现在,有趣的是 gcc 命令,这是我遇到的问题。(其他问题似乎与此有关。)编译 core.c 时,GCC 命令工作得很好,并且按预期生成了一个 .o 文件。当试图编译 system.c 或 consoleio.c 时,GCC 失败了,但是以一种非常意想不到的方式:看起来好像 windows 无法运行程序。这对我来说是意义。我尝试了很多事情,包括自己在窗口外运行这些命令。关于 core.c 的东西很特别,我不知道有什么区别。我从字面上复制了该行并更改了文件名以创建另外两行失败的行。

所以,简而言之,帮助。我在 Windows XP 上使用 DJGPP 和 GCC,最后还有一个 python 脚本应该将所有东西联系在一起。(当项目是单个源文件时,这一切都有效,但尝试将文件拆分为单独的文件会导致这个奇怪的错误。)

谢谢。

PS:是的,我们使用的是批处理文件,我知道这会让你们中的一些人畏缩。但是,如果可能的话,我真的很想在继续使用 makefile 之前了解这个错误。^_^

编辑:接受的答案确实是我们的问题,尽管问题出在 DJGPP,而不是 Windows。(Windows 似乎没有命令限制。)解决方案是使用 MinGW 而不是 DJGPP 进行编译,这样可以立即解决问题。多谢你们!

0 投票
5 回答
116521 浏览

gcc - gcc error: wrong ELF class: ELFCLASS64

I was trying to compile a program using an external compiled object coreset.o. I wrote the public01.c test file and my functions are in computation.c, both of which compiles. However its failing on linking it together. What might be the problem?

0 投票
3 回答
61198 浏览

visual-studio - GCC 与 Visual Studio?

在 Visual Studio 2008 中使用 GCC 而不是 VC++ 有多难?显然,有些关键字不匹配,有些可能无法突出显示语法(除非您创建了新的语言服务)。

这就是“makefile 项目”的用途吗?

0 投票
4 回答
14002 浏览

linux - 在 RHEL4 中安装 GCC 3.4.6

我在命令行中执行以下操作:

1) wget ftp://mirrors.kernel.org/gnu/gcc/gcc-3.4.6/gcc-3.4.6.tar.bz2

2) 焦油 -jxf gcc-3.4.6.tar.bz2

3) cd gcc-3.4.6

4) cd libstdc++-v3

5) ./配置

我收到以下错误:

配置:错误:在 ./../.. 中找不到 install-sh 或 install.sh

在 gcc-3.4.6 目录中实际上有一个“install-sh”文件,但这是当前目录的一个,而不是两个。

配置脚本应该在“./..”中查找“./../..”中的 install-sh ?

怎么了??

0 投票
4 回答
468 浏览

linux - 升级 GCC 后 MySQL++ 库不起作用

我正在使用 mysql++ 库并使用 GCC 3.3.4 进行编译。
那个 GCC 版本有一些错误,所以我升级到 GCC 3.4.6。
升级 GCC 后,我重建了 mysql++ 并重新编译了我的程序。但现在我得到一个分段错误错误。

我收到以下消息:

./mysqlTest: 符号 `_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE' 在共享对象中有不同的大小,请考虑重新链接。
分段故障

有什么我必须重建、重新链接或其他任何东西才能让我的应用程序再次运行的东西吗?
mysql C API怎么样?mysql++ 是它的包装器。
应该重建mysql C API还是什么?

请帮忙,我不知道该怎么办。我需要完成这项工作。

0 投票
4 回答
8178 浏览

gcc - g++ 或 gcc 选项以获取带有警告 ID 的警告消息

默认情况下,gcc/g++ 仅打印带有行号的警告消息。我正在寻找 g++ 或 gcc 将构建警告消息与警告 ID 相关联的选项,以便可以轻松识别警告消息(无需解析)。还有更多选项可以获取更详细的警告信息吗?(虽然我认为每条警告信息本身都可以解释,但只是好奇)

谢谢。

0 投票
2 回答
1873 浏览

gcc - ARM STR7xx 的加载程序脚本

我正在尝试使用 Eclipse + CDT + yagarto (gnu toolchain) + OpenOCD 对 ARM 进行编程。在几个示例项目(例如来自 yagarto 站点)中,我发现了链接器脚本 (*.ld),其中指定了许多链接信息(以及节定义)。实际上我以前没有遇到过这些文件(IAR 不需要它们),我发现它们乍一看有点难以理解。所以我的问题是我是否可以在我的所有项目中为我的目标处理器(STR710FZ2T6)使用一个这样的脚本文件,或者我必须熟悉编写这些脚本并为每个项目编写它们。如果我可以为特定目标处理器的所有项目使用单个文件,请您建议我在哪里可以找到这样的通用文件。

0 投票
2 回答
8386 浏览

linux - 加载多个不同版本的共享库

我在 Linux 上有一个可执行文件,它加载libfoo.so.1(即 a SONAME)作为其依赖项之一(通过另一个共享库)。它还链接到另一个系统库,而后者又链接到系统版本libfoo.so.2. 结果,两者 libfoo.so.1都在执行期间被加载,并且libfoo.so.2本应从版本 1 的库中调用函数的代码最终会从版本 2 的较新系统库中调用(二进制不兼容)函数,因为某些符号保持不变。结果通常是堆栈粉碎和随后的段错误。

现在,链接到旧版本的库是一个封闭源代码的第三方库,我无法控制libfoo它编译的版本。假设剩下的唯一选择是重建一堆当前链接到的系统库libfoo.so.2以链接到libfoo.so.1.

有没有办法避免用链接到旧的本地副本替换系统库libfoo?我可以加载这两个库并让代码调用正确版本的符号吗?所以我需要一些特殊的符号级版本控制?