美文网首页
WebAssembly(一)了解,安装

WebAssembly(一)了解,安装

作者: 喝豆腐脑加糖 | 来源:发表于2018-12-11 21:25 被阅读0次

    javascript作为高级语言,没有“编译”过程,意思是说它进行的是jit技术,边解释边运行的方式运行。

    WebAssembly
    它不是直接的机器语言,因为世界上的机器太多了,它们都说着不同的语言(架构不同),所以很多情况下都是为各种不同的机器架构专门生成对应的机器代码。但是要为各种机器都生成的话,太复杂了,每种语言都要为每种架构编写一个编译器。为了简化这个过程,就有了“中间代码(Intermediate representation,IR)”,只要将所有代码都翻译成 IR,再由 IR 来统一应对各种机器架构。

    详细的介绍看:
    https://blog.csdn.net/TurkeyCock/article/details/83317914?tdsourcetag=s_pctim_aiomsg
    https://segmentfault.com/a/1190000016437116?tdsourcetag=s_pctim_aiomsg

    安装Emsdk

    系统环境Centos7

    在下载源码之前先更新一下这些东西,否则后续编译会报错。

    gcc/g++ 初始带的版本低,更新到最新:
    cd usr/src
    wget 'http://mirrors-usa.go-parts.com/gcc/releases/gcc-7.2.0/gcc-7.2.0.tar.gz'
    tar xvf gcc-7.2.0.tar.gz
    mkdir gcc7objdir
    yum install gmp-devel
    yum install mpfr-devel
    yum install libmpc-devel
    wget ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.15.tar.bz2
    yum install bzip2
    tar -jxvf isl-0.15.tar.bz2
    cd isl-0.15
    ./configure
    make
    make install
    cd ../gcc7objdir/
    ../gcc-7.2.0/configure --prefix=/usr/local/gcc7 --enable-checking=release --enable-languages=c,c++,go --disable-multilib
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
    make -j3(线程根据电脑配置,设置的太多会卡死)
    make install
    sudo ln -s /usr/local/gcc7/bin/gcc /usr/bin/gcc
    sudo ln -s /usr/local/gcc7/bin/g++ /usr/bin/g++
    rm -rf /usr/bin/gcc
    rm -rf /usr/bin/g++
    gcc -v
    

    安装Cmake

    wget https://cmake.org/files/v3.6/cmake-3.6.2.tar.gz
    tar xvf cmake-3.6.2.tar.gz && cd cmake-3.6.2/
    ./bootstrap
    gmake
    gmake install
    /usr/local/bin/cmake --version
    yum remove cmake
    ln -s /usr/local/bin/cmake /usr/bin/
    cmake --v
    

    安装node

    cd /usr/local/src
    wget https://npm.taobao.org/mirrors/node/v10.13.0/node-v10.13.0.tar.gz
    tar xvf node-v10.13.0.tar.gz
    cd node-v10.13.0/
    ./configure
    make
    

    这是即使更新了gcc,但也可能会报错。

    /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found

    /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found


    图片.png

    在电脑里面查看是否有更高版本的libstdc++.so.6的文件
    locate libstdc++.so.6
    strings /usr/src/gcc7objdir/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24 | grep GLIBCXX

    图片.png
    查看连接位置
    ll /usr/lib64/libstdc++.so.6
    删除以前连接
    rm -f /usr/lib64/libstdc++.so.6
    连接找到的新文件
    ln -s /usr/lib64/libstdc++.so.6.0.24 /usr/lib64/libstdc++.so.6

    之后就可以安装emsdk了

    git clone https://github.com/juj/emsdk.git
    cd emsdk
    git pull
    ./emsdk install latest
    ./emsdk activate laatest
    source ./emsdk_env.sh
    

    这样没有出错的情况下,装好大概需要一天时间。

    相关文章

      网友评论

          本文标题:WebAssembly(一)了解,安装

          本文链接:https://www.haomeiwen.com/subject/kxvehqtx.html