ld相关内容

如何编写这个 ld 脚本?

如果我想链接除 z.o 之外的所有 .o 文件,所有 .o(无 z.o)都重定位在 0xC0000000 而 z.o 位于 0xFFFF0000 但 z.o 位于文件偏移量 0x8000. 那么.如何编写这个ld脚本? 这是我的 loader.lds SECTIONS {加载器 0x00000000 : { start.o loader.o }kloader 0x30100000 : ..
发布时间:2021-11-17 22:38:43 其他开发

未解析弱函数的 GCC 行为

考虑下面的简单程序: __attribute__((weak)) void weakf(void);int main(int argc, char *argv[]){弱();} 当用 gcc 编译它并在 Linux PC 上运行它时,它会出现段错误.在 ARM CM0 (arm-none-eabi-gcc) 上运行时,链接器通过跳转到以下指令和 nop 替换未定义符号. 这种行为记录在哪 ..
发布时间:2021-11-17 22:26:27 其他开发

CPU 相关代码:如何避免函数指针?

我为多个 CPU 编写了性能关键代码.我在运行时检测 CPU,并基于此为检测到的 CPU 使用适当的函数.所以,现在我必须使用函数指针并使用这些函数指针调用函数: void do_something_neon(void);void do_something_armv6(void);void (*do_something)(void);如果(CPU == 霓虹灯){do_something = d ..
发布时间:2021-11-17 22:09:09 其他开发

为什么这个函数确实以 1 的偏移量指向自身?

我正在尝试使用 C 为 Nucleo-64 Stm32F401re 板编写裸机闪烁程序.然而,在开始调试错误时(它还没有闪烁),我发现了一个奇怪的地址,我没有找到任何解释.这是反汇编相关部分的输出: blink.elf:文件格式elf32-littlearm.text 节的反汇编:08000000 :8000000: 20018000 andcs r8, r1 ..
发布时间:2021-11-17 22:00:12 其他开发

如何防止“main.o:(.eh_frame+0x1c): relocation truncated to fit: R_AARCH64_PREL32 against `.text'";创建 aarch64 裸机程序时?

在创建裸机可执行文件时,我遇到了这个错误: main.o:(.eh_frame+0x1c): 重定位被截断以适应:R_AARCH64_PREL32 对 `.text'collect2:错误:ld 返回 1 个退出状态 然后我设法创建了一个最小的复制示例: main.c void _start(void) {} notmain.S .skip 32 link.ld ENTRY(_ ..
发布时间:2021-11-17 21:57:14 其他开发

使用 GCC ARM 工具链链接任意数据

我想链接原始二进制数据.我想要么把它放在一个特定的地址,要么让它链接到我在代码中定义的符号(例如char* mydata).由于它不是 obj 文件,我不能简单地将它链接进去. 一个类似的帖子(用 GNU 包含二进制文件ld 链接器脚本) 建议使用带有 -B bfdarch 选项的 objcopy.objcopy 响应“架构 bfdarch 未知". 另一个答案建议将对象转换为自定义 ..
发布时间:2021-11-17 21:40:00 其他开发

如何创建静态链接共享库

对于我的硕士论文,我正在尝试为 ARM Cortex-M3 嵌入式系统采用共享库方法.由于我们的目标板没有 MMU,我认为使用“普通"动态共享库是没有意义的.因为 .text 是直接从闪存执行的,而 .data 是在启动时复制到 RAM 中的,所以我无法解决与代码相关的 .data 问题,因此 GOT 也是如此.GOT 必须通过一个必须在链接时定义的绝对地址来访问.那么为什么不在链接时为所​​有符 ..
发布时间:2021-11-17 21:39:29 其他开发

g++ 优化标志:-fuse-linker-plugin vs -fwhole-program

我正在阅读: http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html 首先提示: 不应与使用此选项 (-fwhole-program) 的 -flto 结合使用.依赖链接器插件应该提供更安全、更精确的信息. 然后,它建议: 如果程序不需要导出任何符号,则可以组合 -flto 和 -fwhole-program 以允许过程间优 ..
发布时间:2021-09-29 19:45:36 服务器开发

链接失败 [ld 找不到库]

我正在尝试通过 make menuconfig 配置 Linux 内核 [Angstrom 发行版],但是我收到了这些错误. make: 警告:文件`/usr/src/linux-2.6.32.61/arch/arm/Makefile' 的修改时间为 11511 秒make[1]:警告:文件`scripts/Makefile.host' 的修改时间为 11393 秒HOSTCC 脚本/基本/fi ..
发布时间:2021-07-23 20:21:42 服务器开发

运行用 NASM 编写的 Win32 应用程序会导致“此应用程序无法在您的电脑上运行"错误

我开始在 Windows 上学习 x86 汇编.我正在学习 32 位 x86 汇编.我使用 nasm 和 ld 来编译我的程序.我使用 mingw32-make 生成文件作为我的构建系统.我假设 ld 包含在 MinGW 中,但我不确定.我只知道它已经在我的电脑上. 我想编译一个非常简单的程序,以确保一切正常,当然,它没有.运行我的可执行文件时,一个巨大的蓝色框出现并显示“此应用程序无法在您 ..
发布时间:2021-06-02 22:12:03 其他开发

MinGW:与-nostdlib链接产生无效的可执行文件

我花了最后两个小时,尝试使用MinGW链接不带任何CRT初始化代码的简单x86汇编程序.我希望可执行文件仅包含下面列出的 _main 方法和 ExitProcess 内核函数的单个导入. 在反汇编器中打开生成的各种文件,发现 _main 确实是入口点,并且导入表包含从 ExitProcess (无名称修饰).code> KERNEL32.dll ,但是Windows不会加载可执行文件,声称“ ..
发布时间:2021-05-29 21:26:50 其他开发

链接到另一个启动文件

我试图通过使用LD脚本中的 STARTUP 指令将程序与我自己的启动文件链接: ...ENTRY(_start)启动(my_crt1.o)... GCC驱动程序用于链接程序(不打扰libgcc等库路径): gcc -T my_script.ld ... 不幸的是,它仅适用于为powerpc目标编译的GCC,而arm或i686目标则不行,并且仍然在collect2中包含crt0.o. ..
发布时间:2021-05-29 21:24:52 其他开发

用libusb编译?

不管我跑什么, ./main.c:1:10:致命错误:libusb.h:没有这样的文件或目录#include"libusb.h"^ ~~~~~~~~~~编译终止. 尝试过的事情 gcc ./main.c -l/usr/include/libusb-1.0/gcc ./main.c -l/usr/include/gcc ./main.c -L/usr/include/libusb-1.0 ..
发布时间:2021-05-29 20:05:41 其他开发

ld忽略其他路径

我正在尝试编译使用Gurobi的C ++程序.问题是,尽管ldconfig看到了ld,但ld找不到该库.我也尝试配置LD_LIBRARY_PATH变量而没有成功 $ sudo ldconfig -v.../opt/gurobi701/linux64/lib:libgurobi.so.7.0.1->libgurobi.so.7.0.1libaes70.so->libaes70.solibGuro ..
发布时间:2021-05-29 20:05:38 C/C++开发

GCC:列出一个静态链接的库

这就是问题.基本上,我的问题是我正在尝试使用选项 -fsanitize = address -static-libasan (调试错误的指针等很酷的东西)为ARM编译应用程序.这可以直接编译为可执行文件,但不适用于从目标文件进行编译.我发现Ofc的静态库是 libasan.a ;无论如何,当我试图链接目标文件中的所有内容时,它说的是«pthread»中的一堆未定义引用,以及一些我什至都找不到的li ..
发布时间:2021-05-29 20:05:31 C/C++开发

了解nostdlib C程序的ELF二进制大小

我使用的是Ubuntu 20.04, gcc 9.3.0, ld 2.34.我有一个简单的hello world程序,它不使用 glibc 或任何其他库,而仅使用write syscall.尽管如此,我的二进制文件大小仍约为8Kb.我不确定为什么这么大而不说1Kb. C程序: intx64_syscall_write(int fd,char const * data,unsigned l ..
发布时间:2021-05-29 20:05:27 其他开发