c - 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
我应该如何编写命令,以便能够获取内存映射文件并同时传递链接器脚本?
请帮助我解决问题。
解决方案
您在此处编写的链接器标志:
-Wl,-Map,output.map
应该
-Wl,-Map=output.map
推荐阅读
- c# - TcpListener TcpClient 获取 IPAddress
- c# - 关闭Windows的exe程序?
- android - 未安装 Android Studio SDK
- php - 无法在php中获取唯一元素
- c# - 浏览器中 ASP.NET Core MVC 中的 InvalidOperationException
- vb.net - 在 WinForms 中填充多个组合框的快速方法
- javascript - JS在对象数组中切片嵌套数组
- git - 从 perforce 迁移到 GitHub
- django - Django通过每隔n个元素将一个元素从一个查询集添加到另一个查询集来合并两个查询集
- c++ - 这个后面的地址是否保证与对象的变量相同