链接编辑器LD参数是什么意思?

问题描述

我编写了NASM(网络汇编程序)程序,由于某些原因,我需要使用一些用C编写的函数。因此,我尝试使用 ld 将已编译的C对象文件与已编译的Assembly对象链接> 链接编辑器。我是这样做的:

ld -m elf_x86_64 -lc --dynamic-linker=/lib64/ld-linux-x86-64.so.2 object_files -o program

在我选择必要的参数之前,它并不想链接和工作足够长的时间。现在,此参数集可以按预期工作。但是我不理解-lc--dynamic-linker=/lib64/ld-linux-x86-64.so.2的含义。他们是做什么的?

解决方法

  1. -lc-链接c标准库
  2. -dynamic-linker = / lib64 / ld-linux-x86-64.so.2。 -设置程序加载器。 Linux ELF二进制文件为此提供了一个字段。

即使对于静态二进制文件,也需要后者,否则其他任何事情都会使加载程序感到困惑,并且它将无法执行。

man ld列出其参数。