linux下非root权限安装ninja
RuntimeError: Ninja is required to load C++ extensions,解决
1.第一步安装re2c
https://github.com/skvadrik/re2c/releases/download/1.3/re2c-1.3.tar.xz,直接下载。
解压 tar xvf re2c-1.3.tar.xz
进入到目录,执行autoreconf -i -W all
错误:bash: autoreconf: command not found
安装autoreconf,直接下载
地址:ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
解压:tar xzf autoconf-2.69.tar.gz
进入目录安装
./configure --prefix=/usr/local
出现错误M4的问题
checking for GNU M4 that supports accurate traces... configure: error: no acceptable m4 could be found in $PATH.
,下载gun m4,地址http://ftp.gnu.org/gnu/m4/ 1.4.16就可以。
解压m4-1.4.16.tar.gz,进入目录后./configure --prefix=/usr/local,出现错误
./stdio.h:477:1: error: ‘gets’ undeclared here (not in a function)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
^
修改./m4-1.4.16/lib/stdio.h代码
change to
old:
#undef gets
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
new:
#undef gets
#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#endif
再执行
./configure --prefix=/usr/local
make && make install
回到autoconf的目录下./configure --prefix=/usr/local ,问题解决
make && make install 命令通过。
回到re2c的目录,autoreconf -i -W all。生成configure文件,./configure --prefix=/usr/local
make && make install
make check测试
执行通过。
vim ~/.profile 添加环境配置,export PATH=PATH=/usr/local/bin/re2c/bin:$PATH
re2c -V,检查版本号,表示安装成功。
2.安装ninja
在https://github.com/ninja-build/ninja/releases/tag/v1.10.2 下载源码
解压tar xzf ninja-1.10.2.tar.gz在ninja-1.10.2的路径下执行 ./configure.py --bootstrap,
生成ninja可执行文件。
cp ninja /usr/bin/
ninja --verison,查看到版本号,ninja安装成功。