今日捣鼓cubieboard开发板,打算通过netbeans远程开发主机模式将linux c/c++远程编译在arm板上。以前笔者用的是Netbeans 7的版本,是可以完美运行编译环境的,但是今日升级到8.0.2版本后就无法配置C++构建主机了,填写好IP和账号密码怎么也没法识别到开发板上的gcc环境,提示为None()。查阅Netbeans官方的bugzilla记录(https://netbeans.org/bugzilla/show_bug.cgi?id=245243),发现也有好多人反馈和笔者一样的问题,在arm开发板上无法配置构建主机。于是逐篇翻阅反馈记录发现了一些解决问题的方法,估记录下来。
netbeans在配置远程主机的时候会在远程linux的/var/tmp目录下创建一个和ssh连接的账号名相关的目录,比如我用root连接主机,那么会创建dlight_root名字的目录。进入这个目录会发现在其子目录下会创建一个pty的二进制文件,我们用ldd的方式去跟踪这个二进制可执行文件所调用的so时会发现:
其调用的libc动态链接库路径为/lib/arm-linux-gnueabi/libc.so.6。
我们可以看到这里的so放在arm-linux-gnueabi的目录下,这个目录是什么含义呢?查阅资料可知这个目录存放的是arm体系中的armel浮点运算单元模式,而如果我们的远程主机系统中没有此so文件,那么pty这个可执行文件就无法正常运行,也就会导致我们的构建主机配置失败,导致怎么都无法识别到我们的gnu开发环境,同时我们配置samba的映射目录也是会失败的。因此当我们的Netbeans C++构建主机配置失败的时候我们首先去远端确认pty文件是否能正常执行。
找到了原因就好办了,我的cubieboard开发板默认只安装了armhf浮点运算的libc库,没安装armel版本的,故导致pty文件运行的失败。执行
apt-get install libc6:armel
命令即解决问题。