源码编译报 Xmx Size、GC、ninja 相关错误解决方案
2017-08-14 19:25
351 查看
最近在对客户发来的源码进行编译时,遇到了一些错误,上网找了很多解决方法,也试了很多种,现将这些方法整理出来。
我编译源码时,报错时的信息有多种,但差不多是一个意思:
内存问题,且错误信息会有:
ninja:build stopped: subcommand failed.
make:***
[ninja_wrapper] Error 1
具体报错有几下几种:
(1)会有提示:Tryincreasing heap size with java option '-Xmx<size>'.
这种情况一般解决方法:在Terminal中依次输入以下三条命令,然后继续编译
exportJACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8-XX:+TieredCompilation -Xmx4g"
./prebuilts/sdk/tools/jack-adminkill-server
./prebuilts/sdk/tools/jack-admin start-server
(2)之前出现这种类似错误时,通过以上方法一般就可以解决了,但这次仍然报错:
cannot allocate memory
此时可能是JackSever编译引起的错误,需要对jack-server进行相关配置,具体步骤会在下方贴出:
1、查看根目录是否有”.jack-settings”
执行”cd~”,进入根目录查看当前目录下是否有”.jack-settings”,如果没有自己在这个目录下创建此文件,具体内容如下:
4000
在当前目录执行ll或ls-l,注意查看此文件的权限是否为rw
如果不是的话,需要执行下面命令修改文件权限
2、查看根目录是否有”.jack-server”目录
查看这个目录下是否有“config.properties”文件,如果没有自己在这个目录下创建此文件,具体内容如下:
此文件的权限也需要是”rw”,如果不是的话执行
基本上需要配置的就这些就行了,有时候8076/8077端口被它人占用了,可以尝试改成8072/8073,或其它端口,在编译整个源码之前,最好利用”jack-admin”命令查看jack-server是否已经运行起来,具体如下
虽然在fullbuild过程中会自动启动jackserver,还是建议先启动jackserver再编译源码,这样不至于出现编译了好久突然报错,这样会浪费时间。
(3)如果已解决,第三条你就可以暂时不用看了,如果仍然错误,只能继续尝试:
GC overhead limit exceeded. Tryincreasing heap size with java option '-Xmx<size>'
修改
以上就是编译出现
ninja:build stopped: subcommand failed.
make:*** [ninja_wrapper] Error 1
错误时我所尝试过的方法,特此记录。但是以上方法可能并不完全适用所有出现类似错误的情况,要看具体的错误信息以及自身编译环境,如果以上方法均不能解决你的错误,欢迎你补充。
我编译源码时,报错时的信息有多种,但差不多是一个意思:
内存问题,且错误信息会有:
ninja:build stopped: subcommand failed.
make:***
[ninja_wrapper] Error 1
具体报错有几下几种:
(1)会有提示:Tryincreasing heap size with java option '-Xmx<size>'.
这种情况一般解决方法:在Terminal中依次输入以下三条命令,然后继续编译
exportJACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8-XX:+TieredCompilation -Xmx4g"
./prebuilts/sdk/tools/jack-adminkill-server
./prebuilts/sdk/tools/jack-admin start-server
(2)之前出现这种类似错误时,通过以上方法一般就可以解决了,但这次仍然报错:
cannot allocate memory
此时可能是JackSever编译引起的错误,需要对jack-server进行相关配置,具体步骤会在下方贴出:
1、查看根目录是否有”.jack-settings”
执行”cd~”,进入根目录查看当前目录下是否有”.jack-settings”,如果没有自己在这个目录下创建此文件,具体内容如下:
# Server settings SERVER_HOST=127.0.0.1 SERVER_PORT_SERVICE=8076 SERVER_PORT_ADMIN=8077 # Internal, do not touch SETTING_VERSION=4
4000
在当前目录执行ll或ls-l,注意查看此文件的权限是否为rw
如果不是的话,需要执行下面命令修改文件权限
chmod 600 .jack-settings
2、查看根目录是否有”.jack-server”目录
查看这个目录下是否有“config.properties”文件,如果没有自己在这个目录下创建此文件,具体内容如下:
# #Fri Jan 20 13:17:11 CST 2017 jack.server.max-jars-size=104857600 jack.server.max-service=4 jack.server.service.port=8076 jack.server.max-service.by-mem=1\=2147483648\:2\=3221225472\:3\=4294967296 jack.server.admin.port=8077 jack.server.config.version=2 jack.server.time-out=3600
此文件的权限也需要是”rw”,如果不是的话执行
chmod 600 config.properties
基本上需要配置的就这些就行了,有时候8076/8077端口被它人占用了,可以尝试改成8072/8073,或其它端口,在编译整个源码之前,最好利用”jack-admin”命令查看jack-server是否已经运行起来,具体如下
#启动Jack server jack-admin start-server #查看Jack server状态 jack-admin server-stat #查看当前服务器有那些Jack server是运行中的 jack-admin list-server #停止Jack server jack-admin stop-server
虽然在fullbuild过程中会自动启动jackserver,还是建议先启动jackserver再编译源码,这样不至于出现编译了好久突然报错,这样会浪费时间。
(3)如果已解决,第三条你就可以暂时不用看了,如果仍然错误,只能继续尝试:
GC overhead limit exceeded. Tryincreasing heap size with java option '-Xmx<size>'
修改
~/.jack-server/config.properties
,将最大数值由4改为1:
(4)很可惜,以上三种方法都没有解决我的问题,最后,修改了
jack-admin
里的内容,路径为:
源码路径
/prebuilts/sdk/tools
,修改
javaXmx
的大小,参照下面的
patch
修改
,之前加的是
Xmx2048M
,问题没有解决,之后改为了
Xmx4096M
,才编译成功
diff --git a/tools/jack-admin b/tools/jack-admin
index ee193fc..33cb913 100755
--- a/tools/jack-admin
+++ b/tools/jack-admin
@@ -451,7 +451,7 @@ case $COMMAND in
if [ "$RUNNING" = 0 ]; then
echo "Server is already running"
else
- JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS-cp $LAUNCHER_JAR $LAUNCHER_NAME"
+ JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS
-Xmx
4096
M
-cp $LAUNCHER_JAR $LAUNCHER_NAME"
echo "Launching Jack server" $JACK_SERVER_COMMAND
(
trap "" SIGHUP
以上就是编译出现
ninja:build stopped: subcommand failed.
make:*** [ninja_wrapper] Error 1
错误时我所尝试过的方法,特此记录。但是以上方法可能并不完全适用所有出现类似错误的情况,要看具体的错误信息以及自身编译环境,如果以上方法均不能解决你的错误,欢迎你补充。
相关文章推荐
- php源码编译常见错误解决方案
- zmap源码编译安装流程及错误解决方案
- ubuntu编译android源码会出的错误以及解决方案
- Android源码编译make的各类错误解决方案汇总
- cmake编译OpenCV3.30源码下载 ippicv文件错误解决方案
- 解决方案--gloox源码编译错误
- php源码编译常见错误解决方案大全
- 编译curl 源码包出现"TESTFAIL: These test cases failed: 20 172 507 "等相关的错误
- Android4.0源码编译方法以及错误解决方案
- 解决方案--gloox源码编译错误
- 源码编译PHP7遇到的错误及解决方案
- MTK8127源码编译出现的错误及相关解决办法
- Qt源码编译完成后,执行中出现undefined symbol: _ZN16QCoreApplicationC1ERiPPci错误解决方案
- MTK8127源码编译出现的错误及相关解决办法
- ubuntu10.10编译android源码(x210ii android2.3)出现的错误以及解决方案
- Android4.0源码编译方法以及错误解决方案
- Android源码编译make的各类错误解决方案汇总
- php源码编译常见错误解决方案
- vs2013编译protobuf(Goole Protocol Buffers)源码错误解决方案
- [内核源码][编译] 关于openssl/opensslv.h错误的解决方案