链接 clang-llvm

2024-01-02

我一直在使用 clang/llvm 开发一个小工具,但我无法成功让 g++ 和 gnu 的链接器将我的代码与 clang 正确链接。

我的链接器生成以下错误:

undefined reference to `clang::FileManager::~FileManager()'

undefined reference to `clang::FileManager::FileManager()'

undefined reference to `llvm::sys::getHostTriple()'

undefined reference to `clang::Diagnostic::Diagnostic(clang::DiagnosticClient*)'

undefined reference to `llvm::outs()'

undefined reference to `clang::TargetInfo::CreateTargetInfo(clang::Diagnostic&, clang::TargetOptions&)'

undefined reference to `clang::SourceManager::getOrCreateContentCache(clang::FileEntry const*)'

undefined reference to `clang::SourceManager::createFileID(clang::SrcMgr::ContentCache const*, clang::SourceLocation, clang::SrcMgr::CharacteristicKind, unsigned int, unsigned int)'

我的编译命令如下所示:

g++ -g -fno-rtti -I~/llvm-2.8/tools/clang-2.8/include \
  -I~/llvm-2.8/llvm/include \
  `~/bin/llvm-config --cxxflags` \
  -c Frontend.cpp

g++ -g -fno-rtti -I~/llvm-2.8/tools/clang-2.8/include \
  -I~/llvm-2.8/llvm/include \
  `~/bin/llvm-config --cxxflags` \
  -c exec.cpp

g++ -I~/llvm-2.8/tools/clang-2.8/include \
    -I~/llvm-2.8/llvm/include -L~/opt/lib/ \
    -g -fno-rtti -lclangDriver -lclangAnalysis \
    -lclangFrontend -lclangSema -lclangAST -lclangParse \
    -lclangLex -lclangBasic  \
    `~/bin/llvm-config --cxxflags --ldflags --libs`  \
    Frontend.o exec.o -o run

任何提示或建议将受到欢迎。

干杯, CT

PS:我一直在探索此页面上的一些信息:

http://ubuntuforums.org/showthread.php?t=532693 http://ubuntuforums.org/showthread.php?t=532693

它可能会起作用,我会在可能的情况下对该提示发表评论。

Solution

使用本教程中的 clang 代码(必须对其进行修改以删除对 FileSystemOptions b/c clang/Basic/FileSystemOptions.h 的引用 clang-2.8 中不存在):http://clangtutorial.codeplex.com/ http://clangtutorial.codeplex.com/

g++ tutorial1.cpp -g -fno-rtti -lclangFrontend -lclangDriver       \
    -lclangCodeGen -lclangSema -lclangChecker -lclangAnalysis      \
    -lclangRewrite -lclangAST -lclangParse -lclangLex -lclangBasic \
    -lLLVMSupport -lLLVMSystem -I~/opt/include/                    \
    `llvm-config --cxxflags --ldflags --libs all`

似乎成功了!


当我针对 llvm / clang 构建了一些东西时,这就是我用来构建它的东西。也许您可以比较两条构建线。

另外,我使用的 llvm-config 命令是:llvm-config --cxxflags --ldflags --libs backend.

最后,这可能部分与订购问题有关。在包含 clang 库之前,您可能需要包含 llvm 的库。

/usr/bin/g++                                                              \
    -fno-exceptions -fno-rtti -fno-common                                 \
    -I/Users/wlynch/Homebrew/include                                      \
    -DNDEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS \
    ../src/main.cpp -c -o src/main.cpp.0.o

/usr/bin/g++
     src/main.cpp.0.o -o /Users/wlynch/Dropbox/Clang/Indexer/build/main               \
     -L/Users/wlynch/Homebrew/lib -L/Users/wlynch/Homebrew/lib                        \
     -lpthread -lm                                                                    \
     -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG     \
     -lLLVMAsmPrinter -lLLVMMCParser -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine \
     -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMTarget -lLLVMCore            \
     -lLLVMX86AsmPrinter -lLLVMMC -lLLVMX86Info -lLLVMSupport -lLLVMSystem            \
     -lclangAST -lclangAnalysis -lclangBasic -lclangChecker -lclangCodeGen            \
     -lclangDriver -lclangFrontend -lclangFrontendTool -lclangIndex -lclangLex        \
     -lclangParse -lclangRewrite -lclangSema -lclangSerialization
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

链接 clang-llvm 的相关文章

  • 从 .Net 将简单数据插入 Excel 文件的最简单方法

    我有一个 Excel 文件 大约有 10 列和 1 20 行 我需要插入 1 20 行包含各种数据元素 我想知道是否有一种方法可以将一些标签放入 Excel 文件中 以便可以找到并替换它们 将列标记为 名称 的东西 这样我就可以在代码中说
  • 何时对向量进行归一化?

    我正在学习 XNA 并且在几乎所有的教育套件中都可以找到http creators xna com en US http creators xna com en US 我总是看到向量上对 Normalize 的调用 我知道归一化基本上将向量
  • 在 MVC 类上创建主键字段

    我是 MVC 和 C 新手 我只是偶然发现它并发现它很有趣 我遇到了一个不允许我继续的问题 这是我的代码 using System using System Collections Generic using System Linq usi
  • 可选参数“必须是编译时常量”

    我有一个类分为两个部分文件 如下所示 public partial class PersonRepository BaseRepository
  • 浏览器收集哪些值作为回发数据?

    当页面被发送回服务器时 浏览器收集每个控件的当前值并将其粘贴到一个字符串中 然后 该回发数据通过 HTTP POST 发送回服务器 Q1 除了控件的 Text 属性和 SelectedIndexchanged 因此除了用户输入数据 之外 控
  • 将语句插入 SQL Server 数据库

    最近几天我试图找到这个错误 但没有成功 我正在尝试在数据库中插入一个新行 一切都很顺利 没有错误 也没有程序崩溃 My INSERT声明如下 INSERT INTO Polozaj Znesek Uporabnik Cas Kupec Po
  • 如何在 C++ 的子目录中创建文件?

    这是我的代码 如何在子目录联系人中创建文件 每次创建该文件时 它都会出现在与我的程序相同的目录中 int main ofstream myfile contacts myfile open a myfile close 在构造函数中指定完整
  • CMake 警告:无法为目标生成安全的链接器搜索路径

    在为 pcl 项目运行 CMake 时 我收到一条警告消息 Configuring done CMake Warning at CMakeLists txt 12 add executable Cannot generate a safe
  • C++ 模板参数类型推断

    我有一个这样的C 模板 template
  • Windows 程序如何临时更改其时区?

    我写了一个函数来返回time t与给定日期的午夜相对应的值 当给定日期没有午夜时 它返回最早可用的时间 例如 当埃及进入夏令时时 这种情况就可能发生 今年 时间更改于 4 月 29 日晚上午夜生效 因此时钟直接从 23 59 转到 01 0
  • 首先EntityFramework数据库 - 类型映射 - 将binary(8)从SQL映射到C#中的int

    在 SQL 内部 我有一个主键为二进制 8 的表 当我使用该表添加到我的模型中时Update Model from Database我可以看到该列有 type Binary 在 C 中 我将该列设为byte 我可以将该列映射到 int 吗
  • 使用 Microsoft Graph 创建用户

    如何使用 Microsoft graph 创建用户 因为我在保存过程中遇到了权限失败的问题 我确实有几个问题 在图中调用创建用户 API 将在哪里创建用户 是在 Azure AD 还是其他地方 我尝试通过传递 json 和必需的标头来调用创
  • ASP MVC 5 - 403 customError 不起作用

    我正在尝试为我的应用程序创建自定义错误页面 它在大部分情况下都有效 但不适用于403 errors 我的网络配置
  • IBM Watson 对话服务错误:无法从“方法组”转换为“conversation.onMessage”

    我正在尝试运行 IBM Watson会话服务团结和下面是代码片段 https github com watson developer cloud unity sdk conversation private Conversation m C
  • ASP.NET Web API Swagger(Swashbuckle)重复OperationId

    I have a web api controller like below In swagger output I am having the below image And when I want to consume it in my
  • 如果数组为空,LINQ 返回 null

    public class Stuff public int x other stuff 我有一个IEnumerable
  • printf 参数不足

    我的问题是关于缺少参数的 printf 之后的行为 printf s blah blah d int integer was given as argument and not int written 我已经知道 如果格式参数不足 则行为是
  • 统一;随机物体移动[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在制作一款机器人战斗游戏 我希望敌人随机移动 然后有时会向敌人移动 我希望运动包含在其中的代码 else if avoid fal
  • 无效的模板相关成员函数模板推导 - 认为我正在尝试使用 std::set

    我有一个继承自基类模板的类模板 基类模板有一个数据成员和一个成员函数模板 我想从我的超类中调用它 我知道为了消除对成员函数模板的调用的歧义 我必须使用template关键字 我必须明确引用this在超级班里 this gt base mem
  • 编译器什么时候内联函数?

    在 C 中 函数仅在显式声明时才内联inline 或在头文件中定义 或者编译器是否允许内联函数 因为他们认为合适 The inline关键字实际上只是告诉链接器 或告诉编译器告诉链接器 同一函数的多个相同定义不是错误 如果您想在标头中定义函

随机推荐

  • Git 合并在我的文件中留下了 HEAD 标记

    我尝试使用 Git 在命令行中合并文件 这时出现一条错误消息 告诉我合并已中止 我以为事情就这样结束了 但后来我意识到我的文件中有 gitmarks 就像这样 start expression validchar 0 9a zA Z int
  • 如何使倒计时器在页面刷新时不重置

    我正在为我的项目创建一个在线考试页面 我有一个倒计时器 但它会在页面刷新时重置 怎样才能让它不重置呢 通过从数据库获取时间来设置计时器 我正在使用 php mysql 请帮我 这是我的代码
  • ODBC 和 OleDB 有什么区别?

    我在这里找到了这个问题 OLEDB 与 ODBC https stackoverflow com questions 271504 oledb v s odbc 这给了我更多信息 但并没有真正回答我要问的问题 所以我将从那里开始 我正在使用
  • React 和 Material-UI:使用 TypeScript 在 createStyles() 中未定义主题

    我正在学习 React with TypeScript 并使用 Material UI 框架作为前端 我尝试让媒体查询正常工作 但出现错误 未捕获的类型错误 无法读取未定义的属性 up 在样式 webpack internal app co
  • SQL 查找查询结果的大小

    所以基本上我正在执行 SQL 选择查询 但我想知道我要撤回多少数据 多少千字节 实际上 显示客户统计数据 http blog sqlauthority com 2009 10 01 sql server sql server managem
  • 为什么 ActionDispatch::Routing::RouteSet 需要这么长时间

    我在 Rails 4 2 1 之上使用 Grape 为我们的应用程序提供 API 但是当我今天检查 Newrelic 的性能时我发现RackApp Proc call and Grape API Root call占用了大量的时间 见截图
  • 在 Mathematica 中使用 MapAt 中的 All

    我经常有一个成对的列表 例如 data 0 0 0 1 12 4 2 14 6 3 25 1 我想做点什么 例如Rescale 到所有第二个元素而不触及第一个元素 我知道的最巧妙的方法是 Transpose MapAt Rescale Tr
  • Sharepoint 2007 和

    问候 我试图让我的 Sharepoint 2007 网站在 IE 中浏览时以标准模式呈现 由于 DOCTYPE html 使我可能担心的每个浏览器都能做到这一点 所以我决定使用它 我到处读到 标准模式可能会导致某些 OOTB 功能和样式 弹
  • 将多个组件绑定到支持 bean 中的一个实例(Primefaces 树)

    我希望能够在我的页面上的 2 个位置拥有 Primefaces 树 原因是我想让具有相同数据的两棵树具有完全相同的状态 相同的节点展开等 我尝试将两个实例绑定到支持 bean 中的相同值 但这会导致仅渲染其中一个实例 我做错了吗 这应该以不
  • Erlang JSON 库:序列化性能?

    Erlang 有许多可用的 JSON 库 但我不清楚哪些具有最佳性能特征 其次是易用性 特别是对于 erlang to json 序列化 我的用例需要 JSON 解析和序列化 但 Erlang 代码可能会产生比接收输入至少多两个数量级的 J
  • spring form taglib禁用属性真的必须解析为字符串吗?

    我最近一直在研究 spring 表单标签库 并遇到了一个相当令人不安的现象
  • 使用 .net MySql 连接器未关闭 MySql 连接

    MySql 连接将进入睡眠模式而不是在 mysql 中关闭 我正在使用 MySql Data 6 5 4 版本与 mysql 进行通信 我不确定下面的代码中我做错了什么 try using var conn new MySqlConnect
  • 如何拦截 cypress 的服务器端 api 调用

    我使用 Nuxt js 作为前端框架 使用 Laravel 作为 API 服务器 并使用 Cypress 编写一些 e2e 测试 我试图通过使用减少 asyncData api 调用cy 拦截 https docs cypress io a
  • POSTMAN:无法完成OAuth2.0登录

    我想请求一个令牌 以便我的 Postman 可以登录我的 Gmail 帐户 然后我可以调用 Google Cloud API 我正在尝试输入我的 Gmail 电子邮件地址及其密码 如您从这张图片中看到的 最终目标是获得这样的 API htt
  • 无法让多页jquery mobile与谷歌地图一起使用

    我有 jQuery Mobile 与谷歌地图一起使用 这样我就可以显示一个独立的页面 其中包含一张占据全屏的地图 但是 我不知道如何制作一个简单的两页示例 其中有一个按钮可以将我带到地图 我很困惑为什么所有示例的正文标签中都有 javasc
  • 为什么我的解决方案无法找到二叉树的最小深度?

    我不明白我的寻找二叉树最小深度的解决方案为什么不起作用 我究竟做错了什么 如果您好奇 这里有一个问题的链接 https leetcode com problems minimum depth of binary tree submissio
  • 如何将我的本地主机指向公共IP地址[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我刚刚设置了一个WAMP 2 2 localhost在我的电脑上 我的一切都运行正常 我可以执行 PHP MYSQL 等 现在我想知道如何将我的本地主
  • 有哪些库可帮助创建手机 2D Java 游戏?

    我想开始为手机开发 2D Java 游戏 在 J2ME 上 因此我想知道是否存在任何库或 引擎 来帮助完成各种图形任务 用像素字体绘制文本 为具有多个帧的精灵绘制位图 如动画 GIF 使用代码 线条 贝塞尔曲线 洪水填充和绘制图形渐变填充
  • 操作系统中的共享内存段

    共享内存属于哪里 这意味着它由每个单独的进程拥有 如堆栈和堆 所以 其他程序不能 能够访问其他程序的堆栈 或者它是由任意数量的进程使用的公共内存段 这 下图以图解方式显示了我的问题 图1 stack stack stack Shared m
  • 链接 clang-llvm

    我一直在使用 clang llvm 开发一个小工具 但我无法成功让 g 和 gnu 的链接器将我的代码与 clang 正确链接 我的链接器生成以下错误 undefined reference to clang FileManager Fil