我正在尝试为一个简单的 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
我应该如何编写命令,以便能够获取内存映射文件并同时传递链接器脚本?
请帮助我解决问题。