惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Simon Willison's Weblog
Simon Willison's Weblog
P
Privacy International News Feed
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Troy Hunt's Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Attack and Defense Labs
Attack and Defense Labs
S
Secure Thoughts
V2EX - 技术
V2EX - 技术
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
O
OpenAI News
Cloudbric
Cloudbric
Google Online Security Blog
Google Online Security Blog
Schneier on Security
Schneier on Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Help Net Security
Help Net Security
Cyberwarzone
Cyberwarzone
G
GRAHAM CLULEY
L
Lohrmann on Cybersecurity
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Spread Privacy
Spread Privacy
NISL@THU
NISL@THU
N
News and Events Feed by Topic
T
Tenable Blog
S
Security @ Cisco Blogs
N
News and Events Feed by Topic
The Hacker News
The Hacker News
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google DeepMind News
Google DeepMind News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
V
Visual Studio Blog
P
Proofpoint News Feed
Webroot Blog
Webroot Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 三生石上(FineUI控件)
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Jina AI
Jina AI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
L
LangChain Blog
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东

LLVM

指令调度在 LLVM 与 OoO 的区别与联系? - V2EX 使用 LLVM 的 clang 替换苹果自带的有问题吗 - V2EX 基于 llvm 开发编程语言,有必要学汇编吗?理由是什么,谢谢 - V2EX 想更熟悉 LLVM,是不是要学会 c++?还要学其他的吗? - V2EX 我用 llvm 实现了 bb 语言的加法和减法,也套娃的实现了打印功能,那怎么实现更高级的,如 http 请求功能呢,该怎么套娃呢?套 c 语言吗 - V2EX 我想用 llvm 制作一门语言的编译器,是不是要学会 llvm ir 里的哪个奇怪的语法 - V2EX 用 Clang 编译时如何将编译参数存进 ELF 的某个 section 里? - V2EX LLVM 8.0 发布 WebAssembly target 移除实验标签 - V2EX 假如要实现一个基于 LLVM IR 的包管理器,有什么坑或者硬伤吗? - V2EX LLVM/Clang LLD LLDB 5.0 正式发布 - V2EX 有哪位在 RHEL5 下编译过 llvm? - V2EX 有没有朋友了解 klee 和 llvm 啊? - V2EX 大家能访问 LLVM(llvm.org)吗 - V2EX ClangFormat 代码格式化工具 - V2EX llvm足够成熟了么?跟GCC相比有什么优劣? - V2EX 王垠果然开始在 LLVM 上做事情了…… - V2EX 居然看到LLVM了 - V2EX
请问 LLVM 如何链接多个目标文件呢? - V2EX
therlf · 2022-08-15 · via LLVM

最近在看 LLVM 的 toturial : Kaleidoscope: Code generation to LLVM IR,里面的代码把所有东西都写到一个源文件了,而我选择将它们分为 lexer 、parser 、ast 分别写到不同的代码里,然后分别编译最后链接到一块

这是我的编译指令

c++ clang++ -g -O3 -I /home/therlf/LLVM/include -I ./ -I /home/therlf/LLVM_Temp/llvm/include `llvm-config --cxxflags --ldflags --system-libs --libs all` ast/CallExprAST.o ast/NumberExprAST.o ast/PrototypeAST.o ast/FunctionAST.o ast/BinaryExprAST.o ast/VariableExprAST.o lexer/lexer.o logger/logger.o parser/parser.o main.cpp -o main

然后就出现了一系列的undefined error,截取一些如下:

/usr/bin/ld: /tmp/main-2b71c8.o:(.data+0x0): undefined reference to llvm::DisableABIBreakingChecks /home/therlf/MyProject/tmp/ast/CallExprAST.cpp:6: undefined reference to llvm::Module::getFunction(llvm::StringRef) const' /home/therlf/LLVM/include/llvm/IR/InstrTypes.h:1112: undefined reference to llvm::Instruction::Instruction(llvm::Type*, unsigned int, llvm::Use*, unsigned int, llvm::Instruction*)' /usr/bin/ld: /home/therlf/LLVM/include/llvm/IR/InstrTypes.h:977: undefined reference to llvm::VectorType::get(llvm::Type*, llvm::ElementCount)'

我一开始以为是 Including path 的问题,但是我编译 tutorial 那个所有东西都在一块的代码是没问题的,自己编译各个模块也是没问题的,就是在一起编译链接了才会有问题,显示很多很多"undefined error"。

所以我认为是链接的问题,到网上搜一些博主说你必须使用lld来链接,而不是ld,但是之前 LLVM 没有 lld 的时候也是用 ld 来链接的,所以感觉使用 ld 应该也可以,而且我编译完 LLVM 后没有 lld 这个工具。

我的操作系统是Ubuntu 20.04,LLVM 版本为10.0.0svn。 我的 Makefile 如下:

HEADERS = $(shell find ast kaleidoscope lexer logger parser -name '*.h')
OBJ = ${SOURCES:.cpp=.o}

CC = clang++
CFLAGS = -g -O3 -I /home/therlf/LLVM/include -I ./ -I /home/therlf/LLVM_Temp/llvm/include
LLVMFLAGS = `llvm-config --cxxflags --ldflags --system-libs --libs all`

.PHONY: main

main: main.cpp ${OBJ}
    ${CC} ${CFLAGS} ${LLVMFLAGS} ${OBJ} $< -o $@

clean:
    rm -r ${OBJ}

%.o: %.cpp ${HEADERS}
    ${CC} ${CFLAGS} ${LLVMFLAGS} -c $< -o $@ ```


万分感谢您的帮助!