问题标签 [linker-scripts]

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 投票
2 回答
1873 浏览

gcc - ARM STR7xx 的加载程序脚本

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

0 投票
5 回答
32180 浏览

linker - 链接共享库时限制符号的可见性

某些平台要求您向链接器提供共享库的外部符号列表。但是,在大多数 unixish 系统上,这不是必需的:默认情况下,所有非静态符号都可用。

我的理解是 GNU 工具链可以选择性地将可见性限制为明确声明的符号。使用 GNU ld 如何实现这一点?

0 投票
2 回答
1387 浏览

arrays - 在链接器文件的 .bss 部分中对齐静态数组

我有一个功能:

和一个链接器文件:

我需要静态数组(.bss 数据)在 4 字节边界上对齐,但似乎数组拒绝这样做。结构和原始类型可以很好地对齐(参见填充线),但是数组已经全部结束了。这是我的地图文件:

有人知道如何对齐数组吗?

0 投票
1 回答
3954 浏览

gcc - 在 Mac OS X 上使用链接描述文件

有没有办法ld在 Mac OS X 上使用链接器脚本?

Linux 上的 GNUld程序接受一个-T <scriptname>选项,但在 Mac OS 上 -T 是一个未知的命令选项。如果可以解决问题,我可以使用 GCC 的替代安装。

0 投票
1 回答
291 浏览

linker - 未知的链接错误

我正在开发自己的操作系统,但为此我需要涉及链接,然后我已经完成了这个链接脚本来构建它:

但是当我尝试链接这些东西时,我遇到了一些错误

$ ld -T linker.ld -o kernel.bin loader.o kernel.o
ld:linker.ld:5: 语法错误
$

我能做些什么?

0 投票
1 回答
951 浏览

gcc - powerpc-eabi-objcopy 创建 1GByte 文件

我的 elf 文件大约 1MByte,包含所有调试符号。当我尝试使用“powerpc-eabi-objcopy -O binary out.elf out.bin”创建二进制文件时,out.bin 的大小为 1GByte。

构建脚本如下所示

关于这个问题的任何想法?

谢谢,

弗里德里希

0 投票
2 回答
6882 浏览

gcc - gcc/ld - 使用来自 glibc.2.6 的 __isoc99_sscanf@@GLIBC_2.7 符号创建一个新的 libc.so

我有一个应用程序,当我尝试运行它时会出错:

但它需要的 glibc 2.7 中唯一的符号是

我想用这个符号写一个小的单一函数“库”作为 __sscanf() 的别名

我怎样才能用 gcc/ld 做到这一点?

我的变体不被接受,因为“@@”符号

第二个我的变种是

但它以来自链接器的“未找到符号 __isoc99_sscanf@@GLIBC_2.7 的版本节点”错误结尾。

0 投票
1 回答
24979 浏览

c - 链接问题:输入文件 *.o 的 i386:x86-64 体系结构与 i386 输出不兼容

当我将我的 osdev 移动到 linux 时,我遇到了链接问题,它以前在 cygwin 下运行的 gcc 3.5.* 和 binutils 2.18(编译为输出 x86_64-elf)上工作。

以下是信息:

gcc -v



ld -v

p>

ld -help的一部分

br>


代码:

main.c
br>
启动.asm
br>
链接.ld
br>
构建.sh
br>

终端输出
br>
我不明白为什么当有 OUTPUT_FORMAT(elf64-x86-64); 时它显示“与 i386 输出不兼容”;在我的链接器脚本中指定目标输出..

0 投票
2 回答
5488 浏览

linux - 将 -dynamic-linker 与链接描述文件一起使用?

我在 Intel 32 位处理器上使用 Linux 2.6.31-14。

C 文件:

链接器脚本:

输出:

怎么了?如何使链接器脚本使用动态 C 库?

0 投票
1 回答
1149 浏览

linker - (vxworks) 在使用此链接描述文件生成的二进制文件中,为什么遇到的第一个地址不是从文本段起始地址开始?

我有一个正在 vxWorks 中工作的项目,构建一个用于测试的 vxsim 二进制文件。链接过程分为三个阶段;makefile 的相关部分大致如下所示:

如果需要更多信息(标志等),请告诉我。我现在不在那台电脑前,但如果到那时还没有答案,我会在大约一个小时后更新这个问题并提供更多详细信息。

以下是链接描述文件的粗略草图。如果您可以访问 vxWorks 6.x,它只是默认的 'link.RAM' 脚本:

wrs_kernel_text_start请注意在包含任何内容之前和任何 ALIGN 语句之前发生在文本段开头的事实。

在我做过的其他 vxWorks 项目中,wrs_kernel_text_start = 0x60010000; 然而,在这个特定的项目中,它是一个大致与0x6025XXXX. 您没有看错,地址比我预期的地址高 1 个数量级——也就是说,它不是0x60025XXX. 正如我预期_sysInit的那样开始。0x60010000