在Linux 环境 运行 node gyp rebuild-gyp configure 出错了,在线求助

一、Node.js 简介及自身使用目的:
中文网站:
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。&
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。&
Node.js 的包管理器 npm,是全球最大的开源库生态系统。
2)目的:在Linux系统下使用Hexo搭建GitHub博客。由于hexo是基于nodejs的应用,所以需先安装nodejs。
二、安装时遇到的“坑”
我的系统为Ubuntu,在搜索nodejs安装方法时先使用了如下方法:
方法一(不推荐):
sudo apt-get install nodejs
sudo apt-get install npm
但使用此安装方法的nodejs版本过老,导致安装hexo时会出现问题,故进行新的搜索。
方法二(适用于在官网下载的终端):
# cd 'node-v0.10.28.tar.gz所在文件夹‘&
# &tar xvf node-v0.10.28.tar.gz&
# &cd node-v0.10.28&
# &./configure & & & (此命令需在python2.6/2.7版本下执行,在python3版本下无法运作;在本文第三部分会有记录)
# make install&
# cp /usr/local/bin/node /usr/sbin/&
查看当前安装的Node的版本&
# node -v&
三、解决“./configure”的思路
由于我在linux系统下安装了python2.7、anaconda3.6版本,系统默认python版本为anaconda的3.6版本,故在执行nodejs安装命令的&&“./configure ”时出现了问题,系统提醒此命令需在python2环境下运行。
思路:将系统切换到python2.7版本,然后执行&&“./configure ”命令
基于用户修改 Python 版本:
想要为某个特定用户修改 Python 版本,只需要在其 home 目录下创建一个 alias(别名) 即可。打开该用户的 ~/.bashrc 文件,添加新的别名信息来修改默认使用的 Python 版本。
alias python='/usr/bin/python2.7'
一旦完成以上操作,重新登录或者重新加载 .bashrc 文件,使操作生效。
$ . ~/.bashrc
检查当前的 Python 版本。
$ python --version
Python 2.7
效果:运行以上方法后python版本的确切换到了python2.7,但在执行& “./configure ”时又出现了新的错误,推测可能跟此切换命令是基于用户的有关,放弃此法;
linux查看python安装位置&
有时我们需要查看python的安装位置,好安装第三方库,linux可先python进入python cmd,然后输入
import sys&
print sys.path
即可打印所有python路径。
思路:删除anaconda,在运行“./configure ”命令
在ubuntu上卸载anaconda的步骤 :
(一)删除整个anaconda目录:
& & 由于Anaconda的安装文件都包含在一个目录中,所以直接将该目录删除即可。到包含整个anaconda目录的文件夹下,删除整个Anaconda目录:
& & rm -rf anaconda文件夹名
(二)建议清理下.bashrc中的Anaconda路径:
& &1.到根目录下,打开终端并输入:
& & & sudo gedit ~/.bashrc
& &2.在.bashrc文件末尾用#号注释掉之前添加的路径(或直接删除):
& & & #export PATH=/home/lq/anaconda3/bin:$PATH
& & & 保存并关闭文件
& &3.使其立即生效,在终端执行:
& & & source ~/.bashrc
& &4.关闭终端,然后再重启一个新的终端,这一步很重要,不然在原终端上还是绑定有anaconda.
效果:使用后可执行“./configure ”命令,此问题解决
本文已收录于以下专栏:
相关文章推荐
我在安装node.js时遇到很多问题,在网上搜索了很久,才找到这些靠谱的解决办法,现在收集整理一下,以备日后使用。
1.运行node.js
出现 “socket: (10107)
下载安装NodeJS后,在自己选择的路径下会有如下的文件:
默认情况下NodeJS安装会同时安装npm(模块管理器:用于管理用户require的模块,有全局和本地两种)。
全局:执行...
Node.Js Express框架
《Nodejs开发指南》这本书很易懂,相比其他node书籍更适合新手看。但书中的实例使用的是express2.0版本,express如今已经更新到4x。不仅如此,书中所用的各种包的版本也非常旧,在使用...
一,所需工具                        ...
IE下默认会开启缓存策略,不管是页面还是通过ajax请求的数据都会议一个url,url是uri(统一资源定位符)的实例,url就是资源的标识符。
写一个demo进行验证,测试环境:IE8,nod...
开始思路是用crawler。具体地址在Github上。/sylvinus/node-crawler
                它的好处是可以用jquery选...
Email:longsu2010 at yeah dot net
最近使用node.js写点东西,使用到了jsdom。使用过程中遇到解析GBK或者GB2312编码网页乱码的问题。下面以&http://...
在公司使用node.js的时候出现了一个怪异的问题,服务器打包超过2min以后,node.js的代码会执行两次,而且在客户端还收不到返回值。
百度这个问题,查了两天都没有很好的结果。最后只能翻墙,求...
loopback安装完后,一般会出现各种问题,Cannot find Module xxx  就是其一
首先我们查看一下node_modules.
可以在项目目录下使用 node 命令 glo...
他的最新文章
讲师:王哲涵
讲师:王渊命
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Linux下解决./configure ,make,make install的报错_Linux教程_Linux公社-Linux系统门户网站
你好,游客
Linux下解决./configure ,make,make install的报错
来源:Linux社区&
作者:chenhongxin
Linux下从源代码下编译安装一个软件有时候会报错,遇到一些麻烦。有些情况即使你用了很多方法去尝试解决,但问题依然存在,那怎么办呢?本教程教你怎么解决Linux软件编译时遇到的问题
注意:编译安装一个软件不会被系统的包管理系统记录信息,这对于卸载和记录软件的行为都是不利的,建议您尽量使用打包好的包(.rpm .deb)
我们分3类错:
./configure 错误
make install 错误
识别这些错误应该是很简单的:./configure的错误会被configure脚本输出,make和make install错误也应该很明显被识别。下面分类说明3种错误和解决办法:
一: & ./configure 错误
以下根据错误出现频率一一道来。第一个是经常性出现错误(是选择性的)。()中表示可选,OR表示有一致的解决办法,&&表示内的文字由具体情况具体表示
1 。(configure:) (error:) &somename& (&someversion& (or higher)) not found. (Please check your installation!) OR checking for &somename&… (configure:) (error:) not found. OR (configure:) (error:) &somename& (&someversion& (or newer)) is required to build &package-you’re-trying-to-compile&
这表明&somename&的包的-dev或者-devel版本没有安装。请使用你发行版的包管理器(或者其他寻找和安装包的方法)来寻找&somename&包并且安装,如果可能的话安装-dev 或者-devel版本
如果-dev 或者-devel版本已经安装了,或者不存在,查看一下已经安装的版本号。它足够高吗?是不是比&someversion&要低,这样你要常 识升级这些包。如果还不行的话,你可以尝试编译你要编译软件的以前的版本。老版本通常使用老版本的库/程序
如果./configure 提示找不到的是一个库(通常提示lib&something&),并且你确定了已经安装了正确版本的库,现在尝试找到你的库文件的位置。如果 库文件路径不包括在你的ld.conf 文件(通常是/etc/ld.conf或者是/etc/ld.so.conf)你应该在此文件中添加,然后运行ldconfig命令(/sbin /ldconfig)需要注意的是:运行ldconfig 通常需要root权限。如果您不知道怎么办,待回看一下下Make install错误的第一点
记:如果您没有修改ld.conf文件的权限,您还可以将库文件路径添加到LD_LIBRARY_PATH变量中。当然这是个笨方法,也不是最好的方法,但是当你没有其他选择时,你只好这么做了:
export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/your/library/directory”
当然,将您的库文件路径。注意当您运行编译好的软件时,LD_LIBRARY_PATH必须包含您的库文件夹路径
2。(configure:) (error:) cannot find header (file) &somename&.h OR (configure:) (error:) (header) (file) &somename&.h missing! OR &similar&
configure脚本提示找不到“.h文件。这个错误和上面的错误是类似的,它也要求您安装特定包的-dev或者-devel版本。然而,它并不 能清楚显示你需要安装哪个包,而&somename&会是一个特别广泛的包,你可以尝试在web上搜索&somename&.h 看它属于那个包,然后尝试用您系统的包管理器这安装这个包(如果可能的话,同时安装它的-dev或者-devel版本 )
3。 (configure:) (error:) no acceptable cc found in &somedirectories&
您没有安装gcc或者cc环境变量没有设置。用包管理器检查gcc是否已经安装,如果没有的话,安装它。如果安装了尝试用这个命令
export CC=”/usr/bin/cc”
如果要永久性的话,你可以将这个命令添加的/etc/profile中(当任何用户登陆进来时会执行这个文件里很多的命令)这样,您以后就不要再设置了。
4。(configure:) (error:) C++ preprocessor “/lib/cpp” fails sanity check
您的g++包或者失踪了或者conrrupted了,请检查您的包管理器(或者其他寻找和安装包的方法)去寻找g++和安装相应的包。注意,许多发 行版并不称为g++,比如说,,在yum源里用gcc-g++来表示g++包。如果您找不到g++,你可以寻找c++,cpp和/或者gcc
5。(configure:) (error:) C++ preprocessor “CC (-E)” fails sanity check
这个是libtool的一些特定有bug的版本,它使configure脚本检查libtool支持的编辑器。这个最快的解决办法就是安装g++(解决办法如上)
二: & Make 错误
make错误通常很具体,并不能够写一个抽象的总结。我会给你一些可能有所帮助的东西
如果您在使用gcc 4编译(使用gcc -dumpversion来查看)(我的补充gcc –version也可),可以尝试用旧版本。首先,请确定包的旧版版已经安装了。可以这样做
ls /usr/bin/gcc*
如果返回有这个
/usr/bin/gcc /use/bin/gcc32
这样的话,你可以用gcc32这个老的版本命令来编译。如果不行的话,请用您的包管理器来安装旧版本的gcc(通常是称之为compat-gcc或 者gcc-&versionbumber&)安装之后,您会通过上边的命令上面边命令检测到已经安装的gcc。让./configure make make install 使用gcc版本的方法如下:
CC=”/usr/bin/gcc32″ ./configure
CC=”/usr/bin/gcc32″ make
CC=”/usr/bin/gcc32″ make install
注意:大多数情况下,您可以不带/usr/bin ,只输入gcc即可。然而,一些不标准的Makefikes可能采取不同的方法。因此,写全路径是最安全的方法。当然,具体/usr/bin/gcc32要用您具体的路径代替
有时候make报的错只是由于一个bug引起的。尝试获得最新版的软件(使用CVS或者SVN或者源,或者下载每日快照)并且常识编译查看时候他们已经修复了bug。
make报的错还可能由特定库/程序的错误版本造成的。特别是特别新或者旧的软件会遇到这个问题。查看以下软件的依赖(他们通常在软件的网站上显示 出来)拿那些包的版本与你系统里的包的版本对比(他们通常可以用系统的包管理器查看)如果电脑中的包版本比网站要求的版本的高,你可能在编译一个老版本的 软件。如果你确实需要编译他,尝试降低依赖。然而,寻找其他方法来安装软件或者找一个替代品是最好的方法。如果您系统的特定软件版本比要求的版本低,您可 以或者编译一个bleeding-edge包,或者您的发行版太旧了,或者都有包括。。。你应该常识更新需要的库/软件,或者编译一个老版本的程序。还 有,查看是否有针对您发行版的包存在着。安装这样的包比常识安装这些错误会很麻烦的。
还有就是在网络中搜索您特定的错误,如果您找不到任何有用的东西,可以省略行号(他们根据版本号不一样),版本号码(你可以用“*”来代替他们,如 果他们包含在文件内部)非字母的字符比如说引号,他们影响搜索引擎的搜索。你可以在很多mailing列表上找到很多信息。一些情况下,还会有源代码的补 丁。可以这样来打补丁
patch -Npl -i &patchfile&
注意当你打补丁时你应该在源代码路径中
三: &Make install 错误
这些错误理解起来很容易,但是我还是列一下吧~通常有两大失败原因
你没有root权限。尝试用sudo make install命令或者使用su命令成为root用户。
sudo make install
提示输入密码时,输入您自己的密码或者系统管理员的密码
这样就可以成为root用户,提示输入密码时,要输入系统管理员的密码。这样成为root之后,只需要运行make install命令即可。然后Ctrl+D或者exit,logout命令来退出。对于sudo来讲的话,它只用root权限来运行一次命令,并不会以 root身份登录的。
您编译的包没有安装目标。这样,您就需要将编译好的二进制文件放到bin文件夹中。在源代码路径下运行ls命令,可执行文件应该会以亮绿色显示的。您需要将这些文件拷贝到/usr/bin或者/usr/local/bin 中,至于哪个就是看您爱好了。命令大致如下
cp &executeablefile& /usr/bin
然后,如果使用多次,可能会是您的/usr目录看起来一团糟。您可以将可执行文件所在的路径添加到您的PATH路径中。进入到可执行文件的路径,执行pwd命令查看全路径名
然后将pwd命令的输出放到这个命令中
export PATH=”$PATH:&pwdoutput&”
现在,运行可执行文件,它就开始工作了。将上述命令添加到您的/etc/profile文件中,这样可永久保存。
我同意这样做不太好,不够简洁和方便。但是有时候开发者没有时间开创建一个安装目标。我们不应该对此感到气氛。。。想想他们为了让我们使用有用和有趣的程序而做出的努力吧
其他问题:
这是一些其他常见的问题,并附上解决办法:
1.一切正常,但是当我要运行我刚才安装的软件时,bash提示找不到。这通常是由于make install将每个东西都安装在了/usr/local或者/opt/&packagename&.检查一下make install 将文件复制到了哪里。可以将可执行文件的路径添加到PATH路径中(下面的例子假设您装包安装在了/usr/local)
export PATH=”$PATH:/usr/local/bin”
当然,您可以用相应的路径来代替/usr/local/bin文件夹。如果希望不用再输入的的话,将输入命令添加到您的/etc/profile中,这样您就不需要重复输入了另外,你可以在configure的时候,控制包安装在哪个目录。。。比如说:
./configure –prefix=/usr
您可以将/usr用您想安装的目标路径代替。注意,您只是在设置prefix,二进制文件会安装杂prefix子目录下,头文件也是~当使用了上述的frefix,你可以在/usr/bin找到二进制文件
2.当我想安装一个老版本的包,我在互联网上找打不到源代码包。然而,你还是有个小希望的。尝试搜索您想寻找的rpm的版本,下载相应的src rpm包。并且解包
rpm系:rpm2cpio &rpmfile&|cpio -idv
这样,您就可以使用从rpm里解压缩出来的源文件
相关资讯 & & &
& (07/28/:23)
& (11/03/:38)
& (06/06/:40)
& (01/28/:00)
& (10/07/:52)
& (05/15/:55)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款在线求助openwrt ipk编译问题(已经搞定~nodejs顺利跑在路由上~功能完整~) - OPENWRT专版 - 恩山无线论坛 - Powered by Discuz!
后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
查看: 8454|回复: 11
在线求助openwrt ipk编译问题(已经搞定~nodejs顺利跑在路由上~功能完整~)
本帖最后由 soonco 于
22:40 编辑
想整一个nodejs进路由~co了openwrt的trunk 按照教程从选板子到sdk交叉工具编译都完成了~然后就不会找不到教程了...求助~
如题已经搞定,忙里偷闲写个教程,发现被人先了,借花献佛下~
他教程里面写的是MTK7620a mipsel的make
要是启用ssl功能就把“--without-ssl”删掉
如果是ar71xx的u请把里面的mipsel替换成mips
如果是arm的u请把替换
LIBS:=-I$(TOOLCHAIN_DIR)/arm-openwrt-linux/include/c++/{gcc版本号}/ -I$(TOOLCHAIN_DIR)/arm-openwrt-linux/include/c++/{gcc版本号}/arm-openwrt-linux-uclibcgnueabi/
./configure --dest-cpu=arm --dest-os=linux --without-ssl --without-snapshot --with-arm-float-abi=
不管什么版本的openwrt版本里面的node make文件都是出自
mips的建议用attitude adjustment分支编译,不然总出错
mipsel直接用trunk就成了
特别注意:attitude adjustment的gcc版本是4.6.3,而trunk的gcc是4.8.3
各个版本md5值:8b905b76b02a6c881f9a6&&node-v0.10.18.tar.gz
ea0be82fa626a991d001&&node-v0.10.19.tar.gz
784e7d7a8e29dfec88ddb2e72a895407&&node-v0.10.20.tar.gz
774bcac42ad2d96b9c96734&&node-v0.10.21.tar.gz
1fa1d8ec0e45&&node-v0.10.22.tar.gz
90d75d6d12890cad4ec9cdfefa5f3a3e&&node-v0.10.23.tar.gz
a715cb7ee2ed37ccb5eb3&&node-v0.10.24.tar.gz
153bdbf77bb8ce123ef331&&node-v0.10.25.tar.gz
15e9018dadc63adfd7bd6&&node-v0.10.26.tar.gz
6a087d80ca490c16afbbeaf3ebdbb946&&node-v0.10.27.tar.gz
8d8ab4bb2d&&node-v0.10.28.tar.gz
e14ea9f46f9beecdf4eb&&node-v0.10.29.tar.gz
我的恩山、我的无线
The best wifi forum is right here.
求助啊~~~55555
我的恩山、我的无线
The best wifi forum is right here.
整nodejs干啥?
我的恩山、我的无线
The best wifi forum is right here.
整nodejs干啥?
前端工程师~用node写脚本比较顺手~所以想整一个放进路由~之前我的很多代码也能直接移植过来
我的恩山、我的无线
The best wifi forum is right here.
前端工程师~用node写脚本比较顺手~所以想整一个放进路由~之前我的很多代码也能直接移植过来
看了下nodejs的configure和Makefile,我觉得可以洗洗睡了
我的恩山、我的无线
The best wifi forum is right here.
看了下nodejs的configure和Makefile,我觉得可以洗洗睡了
我已经搞定啦~真心不难~
我的恩山、我的无线
The best wifi forum is right here.
我已经搞定啦~真心不难~
搞定啦就该出教程啦,求助帖总归要这个结局滴
我的恩山、我的无线
The best wifi forum is right here.
我已经搞定啦~真心不难~
楼主能否来个教程
我的恩山、我的无线
The best wifi forum is right here.
楼主能否来个教程
收到,周末写个详细的教程
我的恩山、我的无线
The best wifi forum is right here.
说好的教程呢? {:soso_e152:}
最近实在太忙~刚偷闲谢谢,居然发现有人已经抢先了~借花献佛~
http://blog.csdn.net/GenRong/article/details/&
我的恩山、我的无线
The best wifi forum is right here.
说好的教程呢?
最近实在太忙~刚偷闲谢谢,居然发现有人已经抢先了~借花献佛~
我的恩山、我的无线
The best wifi forum is right here.
你好,按照你的教程编译怎么报错。
penwrt/openwrt-dreambox/staging_dir/toolchain-mipsel_r2_gcc-4.3.3+cs_uClibc-0.9.30.1/mips-openwrt-linux-uclibc/include/c++/4.6.3/mips-openwrt-linux-uclibc/ -nostdinc++& LDFLAGS=&-L/app/deploy/openwrt/openwrt-dreambox/staging_dir/target-mipsel_r2_uClibc-0.9.30.1/usr/lib -L/app/deploy/openwrt/openwrt-dreambox/staging_dir/target-mipsel_r2_uClibc-0.9.30.1/lib -L/app/deploy/openwrt/openwrt-dreambox/staging_dir/toolchain-mipsel_r2_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/lib -L/app/deploy/openwrt/openwrt-dreambox/staging_dir/toolchain-mipsel_r2_gcc-4.3.3+cs_uClibc-0.9.30.1/lib -nodefaultlibs -luClibc++ -lc -lgcc -lgcc_s -lpthread&
make[4]: Entering directory `/app/deploy/openwrt/openwrt-dreambox/build_dir/target-mipsel_r2_uClibc-0.9.30.1/node-v0.10.17'
/usr/bin/python tools/gyp_node -f make
make -C out BUILDTYPE=Release V=99
make[5]: Entering directory `/app/deploy/openwrt/openwrt-dreambox/build_dir/target-mipsel_r2_uClibc-0.9.30.1/node-v0.10.17/out'
&&mipsel-openwrt-linux-uclibc-gcc '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-D_GNU_SOURCE' '-DHAVE_CONFIG_H' -I../deps/uv/include -I../deps/uv/include/uv-private -I../deps/uv/src&&-pthread -Wall -Wextra -Wno-unused-parameter -pthread -g --std=gnu89 -pedantic -Wall -Wextra -Wno-unused-parameter -Wstrict-aliasing -O2 -fno-strict-aliasing -fno-tree-vrp&&-MMD -MF /app/deploy/openwrt/openwrt-dreambox/build_dir/target-mipsel_r2_uClibc-0.9.30.1/node-v0.10.17/out/Release/.deps//app/deploy/openwrt/openwrt-dreambox/build_dir/target-mipsel_r2_uClibc-0.9.30.1/node-v0.10.17/out/Release/obj.target/libuv/deps/uv/src/fs-poll.o.d.raw -Os -pipe -mips32r2 -mtune=mips32r2 -funit-at-a-time -fhonour-copts -msoft-float -I/app/deploy/openwrt/openwrt-dreambox/staging_dir/toolchain-mipsel_r2_gcc-4.3.3+cs_uClibc-0.9.30.1/mips-openwrt-linux-uclibc/include/c++/4.6.3/ -I/app/deploy/openwrt/openwrt-dreambox/staging_dir/toolchain-mipsel_r2_gcc-4.3.3+cs_uClibc-0.9.30.1/mips-openwrt-linux-uclibc/include/c++/4.6.3/mips-openwrt-linux-uclibc/ -c -o /app/deploy/openwrt/openwrt-dreambox/build_dir/target-mipsel_r2_uClibc-0.9.30.1/node-v0.10.17/out/Release/obj.target/libuv/deps/uv/src/fs-poll.o ../deps/uv/src/fs-poll.c
../deps/uv/src/fs-poll.c: In function 'statbuf_eq':
../deps/uv/src/fs-poll.c:202: error: 'uv_statbuf_t' has no member named 'st_ctim'
../deps/uv/src/fs-poll.c:202: error: 'uv_statbuf_t' has no member named 'st_ctim'
../deps/uv/src/fs-poll.c:203: error: 'uv_statbuf_t' has no member named 'st_mtim'
../deps/uv/src/fs-poll.c:203: error: 'uv_statbuf_t' has no member named 'st_mtim'
make[5]: *** [/app/deploy/openwrt/openwrt-dreambox/build_dir/target-mipsel_r2_uClibc-0.9.30.1/node-v0.10.17/out/Release/obj.target/libuv/deps/uv/src/fs-poll.o] Error 1
make[5]: Leaving directory `/app/deploy/openwrt/openwrt-dreambox/build_dir/target-mipsel_r2_uClibc-0.9.30.1/node-v0.10.17/out'
make[4]: *** [node] Error 2
make[4]: Leaving directory `/app/deploy/openwrt/openwrt-dreambox/build_dir/target-mipsel_r2_uClibc-0.9.30.1/node-v0.10.17'
make[3]: *** [/app/deploy/openwrt/openwrt-dreambox/build_dir/target-mipsel_r2_uClibc-0.9.30.1/node-v0.10.17/.built] Error 2
make[3]: Leaving directory `/app/deploy/openwrt/openwrt-dreambox/feeds/packages/lang/nodejs-openwrt'
make[2]: *** [package/feeds/packages/nodejs-openwrt/compile] Error 2
make[2]: Leaving directory `/app/deploy/openwrt/openwrt-dreambox'
make[1]: *** [/app/deploy/openwrt/openwrt-dreambox/staging_dir/target-mipsel_r2_uClibc-0.9.30.1/stamp/.package_compile] Error 2
make[1]: Leaving directory `/app/deploy/openwrt/openwrt-dreambox'
make: *** [world] 错误 2
我的恩山、我的无线
The best wifi forum is right here.
Powered by

我要回帖

更多关于 node gyp rebuild出错 的文章

 

随机推荐