问题标签 [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.
c++ - 静态变量初始化顺序
C++ 保证编译单元(.cpp 文件)中的变量按声明顺序进行初始化。对于编译单元的数量,此规则分别适用于每个编译单元(我的意思是类之外的静态变量)。
但是,变量的初始化顺序在不同的编译单元中是未定义的。
我在哪里可以看到关于 gcc 和 MSVC 的这个顺序的一些解释(我知道依赖它是一个非常糟糕的主意 - 这只是为了了解我们在迁移到新的 GCC 主要和不同操作系统时可能遇到的遗留代码问题) ?
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 慢。任何人都可以确认或否认这一点吗?
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 进行编译,这样可以立即解决问题。多谢你们!
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?
visual-studio - GCC 与 Visual Studio?
在 Visual Studio 2008 中使用 GCC 而不是 VC++ 有多难?显然,有些关键字不匹配,有些可能无法突出显示语法(除非您创建了新的语言服务)。
这就是“makefile 项目”的用途吗?
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 ?
怎么了??
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还是什么?
请帮忙,我不知道该怎么办。我需要完成这项工作。
gcc - g++ 或 gcc 选项以获取带有警告 ID 的警告消息
默认情况下,gcc/g++ 仅打印带有行号的警告消息。我正在寻找 g++ 或 gcc 将构建警告消息与警告 ID 相关联的选项,以便可以轻松识别警告消息(无需解析)。还有更多选项可以获取更详细的警告信息吗?(虽然我认为每条警告信息本身都可以解释,但只是好奇)
谢谢。
gcc - ARM STR7xx 的加载程序脚本
我正在尝试使用 Eclipse + CDT + yagarto (gnu toolchain) + OpenOCD 对 ARM 进行编程。在几个示例项目(例如来自 yagarto 站点)中,我发现了链接器脚本 (*.ld),其中指定了许多链接信息(以及节定义)。实际上我以前没有遇到过这些文件(IAR 不需要它们),我发现它们乍一看有点难以理解。所以我的问题是我是否可以在我的所有项目中为我的目标处理器(STR710FZ2T6)使用一个这样的脚本文件,或者我必须熟悉编写这些脚本并为每个项目编写它们。如果我可以为特定目标处理器的所有项目使用单个文件,请您建议我在哪里可以找到这样的通用文件。
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
?我可以加载这两个库并让代码调用正确版本的符号吗?所以我需要一些特殊的符号级版本控制?