无线时代

使用Eclipse IDE编译代码遇到的一个问题

技术文章  ·  

公司的新项目使用了NXP LPC1768单片机,供应商提供的开发环境是Eclipse,我们在搭建Eclipse开发环境时遇到了一个奇葩的问题。我们首先按照供应商的建议安装了如下软件:

在全部软件安装完成之后,使用Eclipse打开供应商提供的工程文件,尝试编译,出现了如下的错误:

make all
0 [main] sh 5420 sync_with_child: child 10988(0x204) died before initialization with status code 0xC0000142
12 [main] sh 5420 sync_with_child: *** child state waiting for longjmp
/usr/bin/sh: fork: Resource temporarily unavailable
make: Nothing to be done for `all'.

仔细核对安装的软件,没有发现错误。使用Cygwin命令行,进入工程文件夹下,手动make或者make clean都没有错误,说明工具链是好的。折腾一两个小时之后,忽然想起有另外一台电脑可以正常编译,仔细对比两台电脑的软件及环境变量设置,只有Cygwin的目录排序不一样,具体如下:

可以正常编译的环境变量设置

无法正常编译的环境变量设置

将无法正常编译的那一台电脑的c:\cygwin64\bin这一条环境变量上移,再次打开Eclipse进行编译,编译过程顺利完成!现在可以确定,就是这一条环境变量的位置导致了之前的错误。看了一下别人分享的内容,原因是这样的:

Windows环境变量的查找顺序是按照文件的录入的顺序从前向后找的,最前面一条的优先级最高,如果找到命令就不会再向后找。因此新增环境变量的时候,最好将新添加的放在最前面以获得最高优先级。

所以说,搞研发就是一个不断发现问题,解决问题的过程,这次又学到新知识了,希望可以帮到读者。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注