与包含 Flex 和 Bison 的项目链接 LLVM 时遇到问题

2023-12-08

我一直在学习使用 Flex、Bison 和 LLVM 编写编译器的教程(http://gnuu.org/2009/09/18/writing-your-own-toy-compiler/),并尝试编译最终的二进制文件失败,并出现许多以下“未定义的引用”错误:

g++ -o parser `llvm-config --libs core jit native --cxxflags --ldflags` *.cpp
/tmp/ccl0CSyi.o: In function `NBinaryOperator::codeGen(CodeGenContext&)':
codegen.cpp:(.text+0x2ce): undefined reference to     `llvm::BinaryOperator::Create(llvm::Instruction::BinaryOps, llvm::Value*, llvm::Value*,     llvm::Twine const&, llvm::BasicBlock*)'
/tmp/ccl0CSyi.o: In function `NDouble::codeGen(CodeGenContext&)':
codegen.cpp:(.text+0x3db): undefined reference to `llvm::getGlobalContext()'
codegen.cpp:(.text+0x3e3): undefined reference to     `llvm::Type::getDoubleTy(llvm::LLVMContext&)'
/tmp/ccl0CSyi.o: In function `NInteger::codeGen(CodeGenContext&)':
...
collect2: ld returned 1 exit status
make: *** [parser] Error 1

据我所知,我拥有所有必要的内容,并且 llvm-config 脚本工作正常 --- 有人知道如何解决这些错误吗?


您需要将库放在命令行上的源文件之后

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与包含 Flex 和 Bison 的项目链接 LLVM 时遇到问题 的相关文章

  • XCode 4.2 编译器错误

    当我使用 XCode 4 2 创建新项目 例如 单视图 iOS 应用程序 时 支持文件 文件夹中的 main m 文件如下所示 import
  • 字节码和位码有什么区别[重复]

    这个问题在这里已经有答案了 可能的重复 LLVM 和 java 字节码有什么区别 https stackoverflow com questions 454720 what are the differences between llvm
  • 无法弄清楚为什么 Bison 抛出“由于冲突,规则在解析器中无用”

    我正在为一种非常简单的编程语言编写 BNF 语法 并使用 Flex 和 Bison 进行编译 我只有 3 种变量和常量类型 实数 整数 字符串 我的 l 文件具有 ID 的标记定义 如下所示 DIGIT 0 9 LETTER a zA Z
  • 如何让 clangd 转向 c++20

    当没有其他信息时 如何让 clangd 回退到 c 20 例如 在第一次构建之前 cmake 可以生成一个 这是在带有最新 LLVM 的 Arch Linux 上 这是通过 Emacs LSP 运行的 但这应该没有什么区别 你可以加 Com
  • 获取 LLVM getelementptr 中的操作数名称

    我正在尝试获取 getelementptr 指令引用的数组的名称 当在实际的 C 代码中使用中间变量对数组进行索引时 这似乎起作用 如下所示 int a 0 i a 3 在这种情况下 我得到以下位码 arrayidx getelementp
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 有没有办法改变野牛的弹性启动状态?

    我在词法分析器中定义了不同的状态 这些状态的变化不取决于令牌 而是取决于令牌序列 类似于模板引擎的工作方式 我可以定义更长的标记 但我更喜欢这种方法 您可以将一个函数粘贴到使用 BEGIN 宏的 l 文件的第三部分中 然后从您的 bison
  • 如何使用 g++ 在 c++ 20 中使用模块?

    我读了这个链接https gcc gnu org wiki cxx modules https gcc gnu org wiki cxx modules并尝试从该网站复制以下示例 我已经知道这个编译器部分支持模块系统 注 我用的是windo
  • CMake:连续编译程序两次

    为了能够进行许多自动优化 我希望能够使用标志编译我的程序 fprofile generate首先 然后运行它生成配置文件 然后使用以下命令重新编译程序 fprofile use反而 这意味着我想连续编译我的程序两次 使用两个不同的CMAKE
  • boost.asio 链接和库

    我是 boost asio 编程的新手 并且在链接 boost 库时遇到困难 我的问题是 当我包含 asio 标头时 如何找出应该链接到我的项目的库 例如我用过 include
  • C++20 中模板对非类型文字参数的部分特化:clang 和 gcc 不一致

    玩弄文字 非类型模板参数 https ctrpeach io posts cpp20 string literal template parameters 在c 20中 我发现g 和clang 不同意以下代码 include
  • 野牛语义类型检查分析

    我一直试图到处寻找例子 但徒劳无功 我正在尝试编写一个基本的 Ruby 解释器 为此 我编写了一个 Flex 词汇文件 其中包含标记识别句子和一个语法文件 我希望我的语法包含语义类型检查 我的语法文件包含 例如 arg arg arg 这应
  • Mac OSX 10.7.4,Xcode 4.4.1,没有 头文件?

    我正在编写一个程序 它将使用 C 标准库的数组容器来保存一些对象 但是 每当我尝试在程序中包含以下代码行时 include
  • 动态加载库和共享全局符号

    由于我在动态加载的库中观察到全局变量的一些奇怪行为 因此我编写了以下测试 首先我们需要一个静态链接库 头文件test hpp ifndef BASE HPP define BASE HPP include
  • 使用 `-ftrivial-auto-var-init` 保证非静态聚合对象的填充字节初始化为零

    我正在跟进C 标准是否保证非静态聚合对象的填充字节初始化为零 https stackoverflow com questions 70979077 does c standard guarantee the initialization o
  • 链接器失败:存档中的成员不是对象

    我正在尝试在 Windows 7 上使用 64 位 mingw 构建 Open CASCADE 6 7 1 库 我正在使用x86 64 4 9 1 release posix seh rt v3 rev1 from mingw w64 项目
  • 如何确定特定的 LLVM 指令是否依赖于另一个指令?

    我正在尝试编写 LLVM 优化过程 我需要一种方法来确定一个 LLVM 指令是否影响另一个指令 或依赖于另一个指令 这些依赖关系可以具有不同的性质 第一条指令创建一个值 另一条指令将其用作操作数 第一条指令写入内存位置 另一条指令从该位置读
  • 构造函数定义和声明不匹配

    我有以下 C 代码 其中声明中构造函数的参数与构造函数的定义具有不同的常量性 testClass hpp class testClass public testClass const int x testClass cpp testClas
  • 生成带有完整路径的 gcc 依赖项

    我有一个简单的项目 看起来像这样 build file1 o one file1 o file2 o depend Makefile src file1 cpp one file1 cpp file2 cpp Makefile 是这样的 G
  • 一个单元在哪一级测试无锁代码?

    Can LLVM https packages debian org stretch llvm QEMU https packages debian org stretch qemu kvm GDB https packages debia

随机推荐