我从源代码构建了clang,并且我尝试编译一个hello_world代码,我收到以下错误。
无法创建目标:'没有可用的目标兼容 这三联。
代码如下:
#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
答案 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)