在自己制作app并开发板挂载文件测试的时候报错:
error while loading shared libraries: xxx.so.6: cannot open shared object file: No such file or directory
报错内容是缺少相应动态文件,造成无法编译。
但是我其实是已经将动态库拷贝至挂载的文件库下,经过搜寻,得知产生此错误原因如下:
1、 没有拷贝动态库,比如你的程序有文字,但是你却没有字库,那么系统无法编译。
这个问题的解决办法就是将动态库拷贝到系统库文件下。
2、启动开发板后挂载虚拟机文件系统,在这种情况下,如果只是将动态库拷贝至虚拟机文件系统中,开发板是无法查询到的;因为开发板查询的库是“/lib”而不是“/mnt/lib”。
这个问题的解决办法就是将相应文件拷到开发板根目录下的lib即可,或者采用nfs启动。
3、 动态库链接错误,需要在环境变量中添加正确位置(这种情况一般比较少,在开发板中采用export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/xxx/xx设置)
在解决上述小点2的时候我遇到了一点小问题:
在我cp /mnt/lib 到/lib的时候,我得nfs会卡住,显示 still trying
如上图所示,开发板会在这几句间不停重复,ctrl+c也无法退出。
经查询可知,在保证了挂载正常但一到复制就不正常时,这是我们的nfs传输速率与目标机传输速率不匹配造成的。
我们可以修改挂载方式,在挂载时加上“rsize=1024,wsize=1024”即可:
mount -o nolock,rsize=1024,wsize=1024 192.168.31.140(目标地址):/home/mynfs(需要被挂载文件) /mnt (nfs有时与网络传输速度不匹配,需要加上rsize和wsize)