问题标签 [lld]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
llvm-clang - lld 未定义符号:mainCRTStartup
我的cpp代码:
我使用以下命令来编译和链接它:
我错过了什么?
c++ - 使用 lldb 进行调试时,较高的行号未解析为断点
我正在尝试在计算 Brainfsck 中的 Mandelbrot 集的 MIPS32r6 程序中设置断点。程序本身是用 C++ 编写的,用 Clang 编译,我正在用 LLDB 进行调试。
我遇到的问题是,在 LLDB 中,我可以设置某些断点,主要是在较低的行号上,没有问题。但是,在 Main.cpp 中的第 70 行之后,断点出现为“未解决”(即使执行断点列表显示它们具有完全合理的地址)。也就是说,我尝试在第 70 行之后设置的所有断点都将出现为未解决,并且在第 70 行之前所有合理的断点都可以毫无问题地解决。
我已经放置了我在这里链接的二进制文件的副本:http: //filebin.ca/2tJzo2LLBJWO/MipsTest.bin
以及此处的 Main.cpp 副本:https ://paste.ee/p/WYs8Y
我正在使用以下选项进行构建:
在这一点上,我不确定是什么导致了这个问题。
c++ - LLD - 未知参数:-arch
尝试在 Mac OS Sierra 上使用 LLVM 4.0.0 版本(Clang,LLD)链接一个简单的程序。请注意,这在 Linux 中完全可以实现。
我当前的路径以 LLVM 的bin
目录为前缀(即/opt/LLVM/4.0.0/bin:$PATH
.
程序 ( main.cpp
) 是最简单的 C++ 应用程序:
发出的 shell 命令是:clang -fuse-ld=lld
.
这失败并出现以下错误:
使用-v
开关,我看到了这个链接器命令(格式化):
有谁知道这个平台的正确开关?
c++ - 如何使用 llvm lld 链接 libstdc++
我想链接test.ll
和libstdc++.a
在窗口操作系统中。
我有这样的简单测试 IR 代码。
我成功编译test.ll
为test.obj
llc
。
现在我想test.exe
用lld
用不是 gcc, cl
我已经尝试过这个命令,但不工作......
lld -flavor link /entry:main /implib:libstdc++.a test.obj
它返回这个。
我的 LLVM 版本是 4.0.0,lld 版本是 4.0.0
我应该使用 GCC 吗?请帮帮我。谢谢你。
c - 原始二进制入口点
我在为我的爱好操作系统内核指定入口点时遇到问题。
有一个简单的引导加载程序可以加载内核代码以0x6400000
寻址并跳转到那里。
然后我有这个链接器命令,它输出带有起始地址的内核:
有main.cc
入口点功能:
只要kmain()
是第一个定义的函数,一切都可以正常工作。如果不是:
然后ld
(and lld
) 忽略-e kmain
参数,并创建do_smth()
一个入口点。
我怎么能强制ld
创建kmain()
一个地址为的入口点0x6400000
?
cmake - Emitting a single IR bitcode File with LLVM LLD using CMake
I'm using Ubuntu 16.04 x86_64 and LLVM 5.0 and would like to compile a project to a single LLVM IR bitcode file using CMake. I know there is a way to do this using the GOLD Linker with the LLVM Plugin and add the CMake linker flags "-fuse-ld=gold -Wl,-plugin-opt=emit-llvm" and the CXX flag "-flto".
But when I try to compile the project with the LLVM LLD linker and the "-fuse-ld=lld -Wl,-plugin-opt=emit-llvm" respectively "-flto" Flag, the linker is generating a native executable and no LLVM IR file. I was searching for other LLD options to emit a LLVM IR file but found nothing.
Is there a way (or option) to generate a single LLVM IR file using LLD?
elf - objdump 显示错误的函数开始和结束地址
出于测试目的,我修改了由 llvm 链接器lld生成的 PLT 存根。
之前的存根是:
将程序与此(原始)存根链接并检查它会objdump
产生如下内容:
我通过在末尾添加一个 NOP 来修改 PLT 存根:
我确保修改PltEntrySize
变量以使其反映大小的变化。使用此修改链接和运行程序似乎工作得很好。
但是,当我尝试使用 来检查链接程序的反汇编时objdump
,我看到了一些奇怪的东西:
PLT 存根的地址被解释objdump
为 at 0x2012d0
,但真正的printf@plt
地址是 at 0x2012d8
!这得到了证实readelf -s
:
从哪里objdump
得到它的信息?很可能是我忘记修改链接器中的某些内容。
c - LLVM LD 选项“-rpath-link”
当使用 GNU LD for Linux 使用“-rpath-link”选项链接一些 C 代码时,它运行良好且符合预期。
但是,当使用 Mac OS X 的 LLVM LD 版本 3.7.1 使用“-rpath-link”选项链接相同的 C 代码时,LD 会给出错误(“未知选项”)。
我的问题是:LLVM LD 中“-rpath-link”选项的等价物是什么?
c++ - 与 LLVM LLD 链接不起作用 [macos]
以下用 clang6.0 编译命令:
给出:
我不明白为什么它不能加载/usr/local/opt/myllvm6.0rc1/lib/libLTO.dylib
(它存在于这个位置!)任何想法?