ld相关内容

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

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

从 gcc4.7.x 中删除 crt0.o 的基本原理是什么?

我正在尝试升级到 yagarto4.7.2(另一个 GNU ARM 工具链,对于那些想知道的人),这是为 Windows 移植的 gcc 和 binutils.但是,尝试编译一个简单的 Hello World 会产生: c:/yagarto-20121222/bin/../lib/gcc/arm-none-eabi/4.7.2/../../../../arm-none-eabi/bin/ld.e ..
发布时间:2022-01-17 14:17:54 其他开发

collect2.exe 有什么作用?

当我检查 gcc -v -o proggy.exe proggy.o 生成的代码时,我发现命令行扩展为一大堆库选项和库,所有这些都使用 collect2.exe 链接.ld.exe怎么了?为什么我看不到?有人可以向我解释一下 collect2.exe 的作用吗? 解决方案 collect2 是一个实用程序,用于生成构造函数表,__main(自动生成的函数在 main 的开头调用)依赖于.通 ..
发布时间:2022-01-11 15:52:47 C/C++开发

如何将 C++ 目标文件与 ld 链接

我正在尝试使用 ld 而不是 g++ 链接 C++ 的输出.我这样做只是为了学习如何做,而不是出于实际目的,所以请不要建议只用 g++ 来做. 看着这个问题,这个人当他们运行 ld 命令时得到同样的错误: $ ld test.o -o test.outld:警告:找不到入口符号_start;默认为 00000000004000e8test.o:在函数“main"中:test.cpp:(.t ..
发布时间:2022-01-11 15:49:25 C/C++开发

`-rpath-link` 和 `-L` 有什么区别?

gold 的人说: -L DIR, --library-path DIR将目录添加到搜索路径--rpath-link 目录将 DIR 添加到链接时间共享库搜索路径 bfd ld 的 man 听起来有点像 -rpath-link 用于递归包含的 sos. ld.lld 甚至没有将其列为参数. 有人可以帮我澄清一下这种情况吗? 解决方案 这里有一个demo,对于GNU ld, ..
发布时间:2022-01-11 15:46:19 其他开发

如何使用ld手动运行生成elf可执行文件?

我试图弄清楚在生成可执行文件时链接过程是如何工作的.为此,我正在阅读 Ian Taylor 的博客系列,但很多目前它超出了我的范围 - 所以我想看看它在实践中是如何工作的. 目前我生成了一些目标文件并通过 gcc 链接它们: gcc -m32 -o test.o -c test.cgcc -m32 -o main.o -c main.cgcc -m32 -o 测试 main.o test. ..
发布时间:2022-01-11 15:44:56 其他开发

将二进制文件与内存中特定位置的函数/数据链接起来

我目前正在为 ATMega 编写中间内存引导加载程序. 我想将一段常用函数和数据放在内存中的特定位置,这样: 无法克服引导加载程序部分的大小限制 应用程序部分不会复制库函数、驱动程序等,因此会浪费空间 为了便于说明,下面是所需内存布局的地图: 在 此线程 在 avrfreaks 上,我已经能够移动未标记为 __attribute__ ((section(".boot")) ..
发布时间:2022-01-11 15:42:18 其他开发

使用 printf 和 ld 链接程序?

在使用 NASM 构建定义自己的 _start 而不是 main 的汇编程序时,我得到了一个 undefined reference to _printfx86-64 Ubuntu 构建命令: nasm -f elf64 hello.asmld -s -o 你好你好.ohello.o:在函数“_start"中:hello.asm:(.text+0x1a): undefined refer ..
发布时间:2022-01-11 15:40:49 服务器开发

ld 找不到 -l;

我在 ubuntu 12.04 上安装 pyipopt 时遇到问题.在链接期间,我收到错误: /usr/bin/ld: 找不到 -lcoinhsl 尽管我知道这个库已经安装并且 .so 和 .la 文件在 /home/mostafa/MyBuilds/CoinIpopt/build/lib/中可用 有人对此有解决方案吗? 下面是运行 setup.py build 的完整返回: ..
发布时间:2022-01-11 15:34:53 其他开发

我什么时候应该使用 ld 而不是 gcc?

我想知道什么时候应该使用 ld 链接器而不是 gcc.我只是用 C++ 写了一个简单的 hello world,当然我包括 iostream 库.如果我想用 gcc 制作一个二进制文件,我只需使用: g++ hello hello.cpp我有我的二进制文件. 后来我尝试使用 ld 链接器.要获取目标文件,我使用:g++ -c hello.cpp.好的,这很容易,但是链接命令太长了: ..
发布时间:2022-01-11 15:34:02 其他开发

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

我有一个应用程序,当我尝试运行它时出错: /lib/libc.so.6:未找到版本“GLIBC_2.7" 但它需要的 glibc 2.7 中唯一的符号是 __isoc99_sscanf@@GLIBC_2.7 我想用这个符号作为 __sscanf() 的别名写一个小的单一函数“库" 如何使用 gcc/ld 做到这一点? 我的变体不被接受,因为“@@"符号 int __isoc ..
发布时间:2022-01-11 15:33:12 其他开发

在 Linux 上将符号链接到固定地址

如何使用 GNU ld 将(一些)符号链接到特定的固定地址,以便二进制文件仍然可以在 Linux (x86) 中正常执行?不会对这些符号进行任何访问,但它们的地址很重要. 例如,我有以下结构: struct FooBar {寄存器 32 字段_1;Register32 字段_2;//...};结构 FooBar foobar; 我想将 foobar 链接到地址 0x76543210,但可 ..
发布时间:2022-01-11 15:21:21 服务器开发

符号 etext、edata 和 end 定义在哪里?

这是来自 Linux 手册页的代码: #include #include extern char etext, edata, end;int main() {printf("第一个地址过去:\n");printf("程序文本 (etext) %10p\n", &etext);printf("初始化数据(edata)%10p\n", &edata);print ..
发布时间:2022-01-11 15:16:29 其他开发

GCC默认如何在默认链接器搜索路径之前添加?LIBRARY_PATH 不工作

我正在尝试弄清楚如何设置一些环境变量,以使 g++ 链接到正确版本的库. 我在/usr/lib64 中有一些旧的 bo​​ost 库(链接这些库会失败),在/v/users/regel/lib 中有新的库.所以链接器应该链接到新的库. 命令: $ g++ test.cpp -lboost_system -L/v/users/regel/lib 正确链接程序.但是,我希望将其设置为链 ..
发布时间:2022-01-11 15:16:21 其他开发

GNU 链接器中 -l 和 -L 选项的顺序是否重要?

-l 选项告诉链接器搜索标准目录中的库.并且通过-L,我们可以指定自己的库目录进行搜索. 问题:-L 选项的顺序是否也很重要,就像 -l w.r.t 链接器一样? 此链接:http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html 对-L的顺序没有多说. 编辑还有, 命令中指定的目录在默认值之前搜索行目录 来自手册页(正如 ..
发布时间:2022-01-11 15:13:03 其他开发