我在 SO 看到了很多问题,询问为什么不是所有代码都编译为 PIC或者为什么我们不能总是使用-fPIC 。 但是,所有答案都没有解释当您的对象使用-fPIC编译但您将它们链接到不是PIE(位置无关的可执行文件)的可执行文件时会发生什么。 根据我的理解(使用一些小示例并使用readelf反汇编/检查 ...
我在 SO 看到了很多问题,询问为什么不是所有代码都编译为 PIC或者为什么我们不能总是使用-fPIC 。 但是,所有答案都没有解释当您的对象使用-fPIC编译但您将它们链接到不是PIE(位置无关的可执行文件)的可执行文件时会发生什么。 根据我的理解(使用一些小示例并使用readelf反汇编/检查 ...
考虑以下代码: 它在 gcc 中产生以下警告 但不在 clang 中: 为什么? 这可能是相关的,但引用的gcc 错误已经修复。 我有gcc --version gcc (Debian 12.2.0-9) 12.2.0 。 ...
我的操作系统默认 gcc 版本是 4.8.5,我编译了一个程序使用 gcc-11,所以这个程序不能为旧的 libstdc++.so.6 运行,我可以使用 gcc-11 中的 libstdc++.so.6 替换旧的吗? (意味着作为系统范围内的默认值)? 替代后,其他用gcc-4.8.5编译的程序也能 ...
C11 中strtok_s的声明及其用法看起来与编译器中的strtok_s非常不同,例如与 Visual Studio 2022 (17.4.4) 捆绑在一起的最新版本以及 GCC 12.2.0(查看 MinGW64 发行版)。 我担心这种不同的形式早在 C11 之前就已被开发为strtok的更安 ...
当前在编译包含多个文件的程序以及处理 main 之外的文件时遇到问题。 我怀疑它与编译器有关,与 -c 命令有关,或者可能是我在安装过程中搞砸了。 解决这个问题的任何帮助都会是一个巨大的帮助,我一直在询问同学并在线查看,但似乎解决方案必须非常简单。 这是 source.c 文件,我打算更改的文件。 ...
正如手册页所说: -ffunction-sections -f数据部分将每个 function 或数据项放入其自己的部分如果目标支持任意部分,则为输出文件。 这 function 的名称或数据项的名称确定 output 文件中该部分的名称。 编译这段代码后:... int bss_var_1 ...
我的 mac 上的 vscode 一直存在这个问题,当我 hover 或调用系统函数时,它没有显示它们的描述,它只显示 arguments,没有任何解释。 我尝试使用 MS C/Cpp 扩展及其默认的智能感知并切换到 clangd,但都没有用。 相反,当我使用 CLion 时,它显示一切都很好。 ...
因此,我正在尝试通过 MacOS 11.6.1 上的一个简单示例来学习如何使用库检查。 为此,我复制了以下问题的 Merlijn Sebrechts 代码: Using C unit testing framework Check without Autotools? 当我在终端中执行命令时,出现以 ...
目前在Windows上使用VSCode进行开发,包括C个文件。 但是,包括 unix header 文件(如 <unistd.h>)导致 VSCode 认为存在错误。 当前的编译器路径是“C:/Program Files (x86)/Microsoft Visual Studio/20 ...
我有这个简单的 C 代码: 编译为: 并执行为: 印刷: 为什么不打印yyy ? 通过减少问题,我发现: 对于strcpy GCC 生成的代码不是“调用 strcpy”(见下文) ldr q1, [x0]导致不打印yyy 。 这是foo的生成代码: 如果我将ret放在ldr q1, [x0]将打 ...
我的操作系统是 Ubuntu Linux 20.04 我重新安装了 gcc 和一些库我没有改变系统中的任何东西,我不知道会发生什么。 错误: 代码: ...
当我编译 GTK+ 代码时(在 C 中)gcc 有很多错误! 此代码来自 GTK 演示,但它的示例不适用于我的 Fedore 37! GTK Demo截图那是源代码: 但是当我编译它时: 错误: 但是当我点击 GTK Demo 上的运行按钮时,它在我的电脑上运行: Run Key Combo Bo ...
我需要像这样连接到 C++ 的异常抛出机制: 如果你想知道“你为什么要那样做?” 我有一个抛出异常的简单示例,它是非常简单的 class 层次结构的一部分: 我看不出__dynamic_cast不能向上转型的原因,但它返回nullptr 。 为什么? 我如何让它工作? 它似乎能够很好地进行向下转换 ...
我在看woothash hash function, wyhash的重复 - 根据 SMHasher 项目,最好的 hash 函数之一。 GCC 和-O1都能够在 -O1(或更高级别,当然)执行非常深入的优化,我完全不明白他们 go 是如何从 900 多行 asm 中使用-Og的,它紧跟源代码, ...
我一直在重构一个嵌入式芯片的代码库,它使用许多带有默认参数的方便的重载函数,如下所示:int state, prevState; float time; void setState(int newState, float newtime) { if (newState != state) ...
我为 arm 开发创建了一个奇点图像。 我在我的 WSL 中安装了一个奇点。 我将在wsl上编码和调试,然后在我的奇异点使用交叉编译器将其移动到arm平台。 如何使用vscode构建我的程序(arm版)? 或者如何将奇点与 vscode 结合使用? 我尝试用奇点 shell 构建我的程序,它成功了。 ...
假设我们有一个静态链接到 MyLib1.0 的程序。 还有一个与 MyLib1.1 链接的共享库。 现在如果程序加载这个共享库会发生什么? 我的假设是在运行时我们将对相同的符号有多个不同的定义。 以下两种情况是否都违反了 ODR? 共享库导出所有符号,包括MyLib1.1的符号共享库隐藏了MyLib ...
我有这样的代码。 代码正在运行我知道代码打印 'm' 因为 demangling ( https://gcc.gnu.org/onlinedocs/libstdc++/manual/ext_demangling.html ) 但是为什么编译器为size_t打印'm'? 映射的逻辑是什么 ('i' ...
使用常规 C 文件自动编译自动生成的 C 文件我们开发了一个程序“ cperformer ”,它能够从文本文件生成一个 C 文件(为简单起见)。 它是一种将 C 文件生成为 output 的“元编译器”。因此,我们希望通过自动生成每个 C 文件作为 makefile 的第一步来改进此“C 生成器” ...
不知何故,我的程序将变量视为大端,即使我的系统是小端。 当我执行“lscpu | grep Endian”时,它返回 但是当我使用以下代码运行调试 gcc (x86_64 linux) 可执行文件时: 它返回 0x499FDC6D,而对于小端它应该返回 0x6DDC9F49 ...