Compilation 编写LLVM通过-失败

Compilation 编写LLVM通过-失败,compilation,llvm,clang,Compilation,Llvm,Clang,不过我正在努力,试着写一个非常简单的通行证。(假设我使用的是'Joe'而不是'hello',因为相关目录中已经有一个'hello') 我在应该创建的地方创建了目录“joe”,我在“joe”中创建了建议的cpp文件(尽管我注意到附近的目录中没有任何cpp文件),我将其命名为“joe.cpp”,因为我不相信有人告诉我不同的情况 我看到文档中的部分,它说‘在本地目录中用一个简单的“gmake”命令编译文件’,但我得到了错误 make:**无规则可作为目标 /Users/joXXXXX/llvm/llv

不过我正在努力,试着写一个非常简单的通行证。(假设我使用的是'Joe'而不是'hello',因为相关目录中已经有一个'hello')

我在应该创建的地方创建了目录“joe”,我在“joe”中创建了建议的cpp文件(尽管我注意到附近的目录中没有任何cpp文件),我将其命名为“joe.cpp”,因为我不相信有人告诉我不同的情况

我看到文档中的部分,它说‘在本地目录中用一个简单的“gmake”命令编译文件’,但我得到了错误

make:**无规则可作为目标
/Users/joXXXXX/llvm/llvm/lib/Transforms/joe/Makefile',
由
Makefile'所需。停下来

这完全令人困惑。我注意到了与的相似之处,但在这种情况下,运行../config,然后在根目录中运行make解决了这个问题。在我的任务中,这需要20分钟,然后什么都没有改变。。。谁能告诉我应该发生什么,或者给我一个成功的痕迹

编辑-本地生成文件如下所示:

# Makefile for hello pass
#
# # Path to top level of LLVM hierarchy
LEVEL = ../../..
#
# # Name of the library to build
LIBRARYNAME = joe
#
# # Make the shared library become a loadable module so the tools can 
# # dlopen/dlsym on the resulting library.
# LOADABLE_MODULE = 1
BUILD_ARCHIVE = 1
# # Include the makefile implementation stuff
include $(LEVEL)/Makefile.common

因此,当帮助文件显示“lib/Transforms/Hello”时,它的意思是“something/llvm/lib/Transforms/Hello”而不是“something/build/lib/Transforms/Hello”。事后看来,这并不像可能的那样不透明,但我想留下这个答案,以帮助其他可能在文档中遗漏这一点的人

因此,当帮助文件说“lib/Transforms/Hello”时,它的意思是“something/llvm/lib/Transforms/Hello”而不是“something/build/lib/Transforms/Hello”。事后看来,这并不像可能的那样不透明,但我想留下这个答案,以帮助其他可能在文档中遗漏这一点的人

我遇到了同样的问题,通过重新阅读教程解决了这个问题:

首先,配置和构建LLVM。这需要直接在LLVM源代码树中完成,而不是在单独的对象目录中完成

这意味着您不应该按照LLVM get started中的建议创建“build”文件夹。假设您在
$llvm
中下载了llvm源代码,下面是我使其工作的列表:

  • 在$LLVM/lib/Transforms/中创建一个新文件夹,比如MyHello,以及教程中所述的过程所需的文件

  • $cd$LLVM

  • 美元/配置

  • $make

  • $cd lib/Transforms/MyHello

  • $make


我遇到了同样的问题,通过重新阅读教程解决了这个问题:

首先,配置和构建LLVM。这需要直接在LLVM源代码树中完成,而不是在单独的对象目录中完成

这意味着您不应该按照LLVM get started中的建议创建“build”文件夹。假设您在
$llvm
中下载了llvm源代码,下面是我使其工作的列表:

  • 在$LLVM/lib/Transforms/中创建一个新文件夹,比如MyHello,以及教程中所述的过程所需的文件

  • $cd$LLVM

  • 美元/配置

  • $make

  • $cd lib/Transforms/MyHello

  • $make


您是否有类似于
Makefile:在您的Makefile中。这就是错误消息所说的。编辑以提供完整的makefile:)您是否有类似于
makefile:在您的Makefile中。这就是错误消息所说的。编辑以提供完整的makefile:)也可供将来参考:您可以使用单独的生成目录,但必须进入/lib/Transform目录,为pass创建一个子目录,并将
makefile
复制到其中。然后,如果在同一目录中执行
make
,它将从源代码树中的正常位置提取源代码。此外,您的通行证(在
Makefile
中)的
LIBRARYNAME
必须以“LLVM”开头,如“LLVMFooPass”;否则链接器将忽略它,您将无法获得
。因此
文件。@br您确定吗?图书馆名称必须以“LLVM”开头,这一点没有明确说明。另外,供将来参考:您可以使用单独的构建目录,但必须进入/lib/Transform目录,为您的通行证创建一个子目录,并将
Makefile
复制到其中。然后,如果在同一目录中执行
make
,它将从源代码树中的正常位置提取源代码。此外,您的通行证(在
Makefile
中)的
LIBRARYNAME
必须以“LLVM”开头,如“LLVMFooPass”;否则链接器将忽略它,您将无法获得
。因此
文件。@br您确定吗?图书馆名称必须以“LLVM”开头,这一点没有明确说明。