问题标签 [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.
gcc - ARM STR7xx 的加载程序脚本
我正在尝试使用 Eclipse + CDT + yagarto (gnu toolchain) + OpenOCD 对 ARM 进行编程。在几个示例项目(例如来自 yagarto 站点)中,我发现了链接器脚本 (*.ld),其中指定了许多链接信息(以及节定义)。实际上我以前没有遇到过这些文件(IAR 不需要它们),我发现它们乍一看有点难以理解。所以我的问题是我是否可以在我的所有项目中为我的目标处理器(STR710FZ2T6)使用一个这样的脚本文件,或者我必须熟悉编写这些脚本并为每个项目编写它们。如果我可以为特定目标处理器的所有项目使用单个文件,请您建议我在哪里可以找到这样的通用文件。
linker - 链接共享库时限制符号的可见性
某些平台要求您向链接器提供共享库的外部符号列表。但是,在大多数 unixish 系统上,这不是必需的:默认情况下,所有非静态符号都可用。
我的理解是 GNU 工具链可以选择性地将可见性限制为明确声明的符号。使用 GNU ld 如何实现这一点?
arrays - 在链接器文件的 .bss 部分中对齐静态数组
我有一个功能:
和一个链接器文件:
我需要静态数组(.bss 数据)在 4 字节边界上对齐,但似乎数组拒绝这样做。结构和原始类型可以很好地对齐(参见填充线),但是数组已经全部结束了。这是我的地图文件:
有人知道如何对齐数组吗?
gcc - 在 Mac OS X 上使用链接描述文件
有没有办法ld
在 Mac OS X 上使用链接器脚本?
Linux 上的 GNUld
程序接受一个-T <scriptname>
选项,但在 Mac OS 上 -T 是一个未知的命令选项。如果可以解决问题,我可以使用 GCC 的替代安装。
linker - 未知的链接错误
我正在开发自己的操作系统,但为此我需要涉及链接,然后我已经完成了这个链接脚本来构建它:
但是当我尝试链接这些东西时,我遇到了一些错误
$ ld -T linker.ld -o kernel.bin loader.o kernel.o
ld:linker.ld:5: 语法错误
$
我能做些什么?
gcc - powerpc-eabi-objcopy 创建 1GByte 文件
我的 elf 文件大约 1MByte,包含所有调试符号。当我尝试使用“powerpc-eabi-objcopy -O binary out.elf out.bin”创建二进制文件时,out.bin 的大小为 1GByte。
构建脚本如下所示
关于这个问题的任何想法?
谢谢,
弗里德里希
gcc - gcc/ld - 使用来自 glibc.2.6 的 __isoc99_sscanf@@GLIBC_2.7 符号创建一个新的 libc.so
我有一个应用程序,当我尝试运行它时会出错:
但它需要的 glibc 2.7 中唯一的符号是
我想用这个符号写一个小的单一函数“库”作为 __sscanf() 的别名
我怎样才能用 gcc/ld 做到这一点?
我的变体不被接受,因为“@@”符号
第二个我的变种是
但它以来自链接器的“未找到符号 __isoc99_sscanf@@GLIBC_2.7 的版本节点”错误结尾。
c - 链接问题:输入文件 *.o 的 i386:x86-64 体系结构与 i386 输出不兼容
当我将我的 osdev 移动到 linux 时,我遇到了链接问题,它以前在 cygwin 下运行的 gcc 3.5.* 和 binutils 2.18(编译为输出 x86_64-elf)上工作。
以下是信息:
gcc -v
ld -v
ld -help的一部分
代码:
main.c
br>
启动.asm
br>
链接.ld
br>
构建.sh
br>
终端输出
br>
我不明白为什么当有 OUTPUT_FORMAT(elf64-x86-64); 时它显示“与 i386 输出不兼容”;在我的链接器脚本中指定目标输出..
linux - 将 -dynamic-linker 与链接描述文件一起使用?
我在 Intel 32 位处理器上使用 Linux 2.6.31-14。
C 文件:
链接器脚本:
输出:
怎么了?如何使链接器脚本使用动态 C 库?
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