首页 > 解决方案 > LLD 和链接描述文件

问题描述

我正在尝试为一个简单的 c 程序发送链接器脚本。我在 Ubuntu 和 Windows 上都试过了。

在 Ubuntu 上

经过一番研究,我发现它正在GNU-ld使用,所以使用 clang 命令行选项-fuse-ld=lld,所以现在我使用 clang 默认链接器链接lld

我试过这个命令

clang main.c -ffreestanding -nostartfiles -nodefaultlibs -fuse-ld=lld -Wl,-Map,output.map,-T Example_Linker.ld -o main

一切正常。我得到了内存映射文件,并且还能够传递链接器脚本。

在 Windows 上

Clang 最初寻找 Microsoft Visual Studio Linkerlink.exe来生成可执行文件。

它不支持链接器脚本。

所以随着-fuse-ld=lld

我尝试了以下命令
clang main.c -ffreestanding -nostartfiles -nodefaultlibs -fuse-ld=lld -Wl,-Map,output.map,-T Example_Linker.ld -o main

所以现在抛出的错误是

clang: error: unknown argument: '-Map'
lld-link: warning: ignoring unknown argument: -T

我应该如何编写命令,以便能够获取内存映射文件并同时传递链接器脚本?

请帮助我解决问题。

标签: cwindowsclanglinker-scriptslld

解决方案


您在此处编写的链接器标志:

    -Wl,-Map,output.map

应该

    -Wl,-Map=output.map

推荐阅读