ld(链接器或加载器)程序将目标文件,归档文件和(参考)共享库组合在一起,将其数据和地址与符号引用一起重定位。链接通常是编译程序的最后一步。
我正在尝试使用 Ubuntu 创建一个简单的内核。在终端我输入 ld -Ttext 0x1000 -o kernel.bin loader.o main.o Video.o 但我收到以下错误消息作为回报: ld:i386 建筑...
我正在尝试制作一个简单的操作系统,但似乎无法让链接器工作。 我尝试使用命令: ld -m elf_i386 -o kernel.bin -Ttext 0x1000 kernel-entry.o kernel.o --oformat 二进制文件 但它只是
Arm GCC 链接器:如何将数据放在(rw)非易失性存储器中的绝对地址
我面临以下问题。我正在对 ARM cortex M4 微控制器进行编程,我希望它具有 IP 地址、网络掩码、网关等的默认值。这个默认值...
wsl2 ubuntu g++ 13 ld 无法解析存在的 xerces 引用
构建 xerces-c 3.2.4 并使用最小的 main.cpp 后: // 其他包括文件、声明和非 Xerces-C++ 初始化。 使用命名空间 xercesc; int main(int argc, char* argv[]) { t...
2 个重复符号。如何告诉链接器选择一个而不是另一个? [已关闭]
我有2个库(xxx.a,yyy.a),都定义了一个符号:SYMBOL_X。 当链接它们时,链接器会抱怨符号重新定义。 ld:错误:重复符号:xxx.a(xxx.o): yyy.a(yyy.o): SY...
A.ld 部分 { .rel.rodata.func_reg : { 提供(func_reg_start = .); *(.func_reg.aaa.*) 提供(func_reg_end = .); ... } } 在.text之后插入; 黄曲霉 打字...
如何修复“/usr/bin/ld:警告:trap.o:缺少 .note.GNU-stack 部分意味着可执行堆栈”?
我分别在wsl和我的主要使用的操作系统archLinux中的ubuntu20.04上编译了相同的项目。在 wsl 上,一切正常,而在 archlinux 上,会显示如下错误消息: /usr/bin/ld:
我是 riscv GNU 工具链的新手。编译程序时,出现了一些错误。 /XXX/bin/../lib/gcc/riscv64-unknown-elf/10.2.0/rv64imac/lp64/libgcc.a(gedf2.o)... 中名为 **'__gtdf2'** 的隐藏符号...
ELF phdr:将来自多个可执行文件范围的内存页拼凑在一起
我正在修补(静态链接)ELF 可执行文件。 我想从二进制文件的多个不同部分在虚拟地址空间中创建页面。 这是一个简单案例的可视化...
我没有找到任何关于“-fno-pie”和“-no-pie”之间区别的有用信息。它们是 gcc 标志还是 ld 标志?它们是否都需要? 我找到了一块 makef...
我想从 C 库/文件的正常使用中隐藏一些符号,以防止名称冲突并避免 API 的可能扩展(Hyrum 定律)。静态符号是隐藏的(但我的使用...
我正在尝试使用链接器脚本将一些用 __attribute__((common)) 定义的变量重新定位到自定义部分,最好是在我选择的某个地址。我的方式...
我正在尝试从 macOS 上的源代码构建 PHP 8.2.5,以在我的 C 应用程序中启用 PHP-Embed 的功能。使用提供的 ./configure 和 make 后,构建过程生成 Linux-st...
我有一个名为 global_params.c 的文件,其中包含许多全局变量。在该文件中,我尝试将它们合并为一系列结构。我试图将这些定义为全球标准......
安装所有关于 LD 的库后,我不断得到以下信息 错误输出: /usr/bin/ld: 找不到 -lsdl: 没有那个文件或目录 /usr/bin/ld: 找不到 -lsdl_mixer: 没有那个文件或
我正在尝试交叉编译,主机是 windows 目标是 stm32(arm)。我正在尝试从 arm-none-eabi-ld 生成一个映射文件。 我的问题是双重的 我无法生成地图文件。这是我的
我在 VS Code 中构建我的 C++ 代码时遇到了问题。出于某种原因,我可以在 linux 终端中使用 g++ 编译我的代码,但是当我尝试在 VS Code 中构建我的项目来调试它时,它说它不能
我不明白为什么我有这个错误:ls: filename: relocation R_X86_64_32 against '.data' cannot be used when making a shared object;使用 -fPIC 重新编译。 我试着理解这个问题,我
GNU libc 2.31 对“xdr_string”的未定义引用
xdr_string 应该是 glibc 的一部分吗?我在 glibc 2.31 中得到了对 xdr_string 的未定义引用。我检查了符号,似乎所有 xdr_* 方法都有 @GLIBC_2.2.5 后缀。 % rpm -qf libc.so.6 glibc-2.31-...
为什么我的 LD 会抱怨无效的 __stack_chk_local_fail_?
我正在尝试在 Monjaro (x86-64) 上用 Microsoft VS 代码编译一个操作系统项目,并反复获得以下输出: gcc -m32 -nostdlib -nodefaultlibs -lgcc start.o libc/string/memcmp.o