clang:'没有可用的目标与此三重

时间:2017-10-16 20:01:24

标签: c++ clang++

我从源代码构建了clang,并且我尝试编译一个hello_world代码,我收到以下错误。

  

无法创建目标:'没有可用的目标兼容   这三联。

  1. clang version 6.0.0(trunk 315722)
  2. 目标:x86_64-unknown-linux-gnu
  3. 主题模型:posix
  4. InstalledDir:/ opt / apps / clang / bin
  5. 代码如下:

    #include <iostream>
    
    int main()
    {
        int a = 1;
        std::cout << a << std::endl;
        return 0;
    }
    

    我试过,clang ++ -std = c ++ 11 hello.cpp -o run 和clang ++ -std = c ++ 11 -target x86_64-unknown-linux-gnu hello.cpp -o run

1 个答案:

答案 0 :(得分:0)

我刚开始使用emscripten并遇到了同样的问题。我在Linux(Ubuntu)上运行,并从git安装。所以我试图更新。

首先我尝试了这个命令:/emsdk update吐出这条消息:

  

您似乎通过从GitHub克隆来引导Emscripten SDK。在   在这种情况下,使用“git pull”而不是“emsdk update”来更新emsdk。 (如果您有本地更改,则不会自动执行此操作)   或者,使用“emsdk update-tags”刷新来自不同Git存储库的最新标记列表。

吐出的./emsdk update-tags也是如此:

  

从Emscripten Github存储库中获取所有标签...   完成。有124个已标记的版本,最新版本为1.37.37。   从Binaryen Github存储库中获取所有标签...   完成。 51个标记的Binaryen版本可用,最新版本为1.37.37。   获取所有预编译的标记版本..   正在下载:/ {home /usr/program/emsdk/llvm-tags-32bit.txt https://s3.amazonaws.com/mozilla-games/emscripten/packages/llvm/tag/linux_32bit/index.txt   正在下载:/ {home /usr/program/emsdk/llvm-tags-64bit.txt https://s3.amazonaws.com/mozilla-games/emscripten/packages/llvm/tag/linux_64bit/index.txt,1269字节

然后我跑了./emsdk install latest吐了出来:

  

安装SDK的sdk-1.37.37-64bit'..   安装工具'clang-e1.37.37-64bit'..   文件'llvm / tag / linux_64bit / emscripten-llvm-e1.37.37.tar.gz'的内容已经存在于目的地'/home/usr/program/emsdk/clang/e1.37.37_64bit'中,正在跳过。   完成安装工具'clang-e1.37.37-64bit'。   安装工具'node-8.9.1-64bit'..   文件'node-v8.9.1-linux-x64.tar.xz'的内容已存在于目的地'/home/usr/program/emsdk/node/8.9.1_64bit'中,正在跳过。   完成安装工具'node-8.9.1-64bit'。   安装工具'emscripten-1.37.37'..   文件“https://github.com/kripken/emscripten/archive/1.37.37.tar.gz”的内容已经存在于目的地'/home/usr/program/emsdk/emscripten/1.37.37'中,正在跳过。   完成安装工具'emscripten-1.37.37'。   完成安装SDK的'sdk-1.37.37-64bit'。

然后我运行吐出的命令./emsdk activate latest

  

将.emscripten配置文件写入用户主目录/ home / bandito /   已使用以下内容重写Emscripten配置文件/home/bandito/.emscripten:   进口口   LLVM_ROOT = '/家庭的/ usr /程序/ emsdk /铛/ e1.37.37_64bit'   EMSCRIPTEN_NATIVE_OPTIMIZER = '/家庭的/ usr /程序/ emsdk /铛/ e1.37.37_64bit /优化'   BINARYEN_ROOT = '/家庭的/ usr /程序/ emsdk /铛/ e1.37.37_64bit / binaryen'   NODE_JS = '/家庭的/ usr /程序/ emsdk /节点/ 8.9.1_64bit /斌/节点'   EMSCRIPTEN_ROOT = '/家庭的/ usr /程序/ emsdk / emscripten / 1.37.37'   SPIDERMONKEY_ENGINE =''   V8_ENGINE =''   TEMP_DIR ='/ tmp'   COMPILER_ENGINE = NODE_JS   JS_ENGINES = [NODE_JS]    要从命令行方便地访问所选工具集,请考虑将以下目录添加到PATH,或调用'source ./emsdk_env.sh'为您执行此操作。 /home/usr/program/emsdk:/home/usr/program/emsdk/clang/e1.37.37_64bit:/home/usr/program/emsdk/node/8.9.1_64bit/bin:/home/usr/program/ emsdk / emscripten / 1.37.37   将以下工具设置为活动:      铛,e1.37.37-64bit      节点8.9.1-64bit      emscripten-1.37.37

正如你所看到的那样,用粗体/斜体文字说明更新你的路径,所以我用source ./emsdk_env.sh吐出来了:

  

将目录添加到PATH:   路径+ = / home / usr / program / emsdk   路径+ = /home/usr/program/emsdk/clang/e1.37.37_64bit   路径+ = /home/usr/program/emsdk/node/8.9.1_64bit/bin   PATH + = /home/usr/program/emsdk/emscripten/1.37.37   设置环境变量:   EMSDK = / home / usr / program / emsdk   EM_CONFIG = /home/bandito/.emscripten   BINARYEN_ROOT = /home/usr/program/emsdk/clang/e1.37.37_64bit/binaryen   EMSCRIPTEN = /home/usr/program/emsdk/emscripten/1.37.37

我的程序现在符合要求。

这也解决了这个错误:

  

警告root:LLVM版本显示不正确(看到“”,预期“3.4”)

emcc版本从1.22更新为1.37.37

   emcc(Emscripten gcc / clang-like replacement + linker仿真GNU ld)1.37.37   clang版本5.0.0(emscripten 1.37.37:1.37.37)