在windows上编辑好sh后到linux下运行时常会出现“no such file or directory”,这一般是格式的问题,改成unix格式就可以,具体步骤如下。
1、开始以为是sh路径问题,用which查看是正确的。
2、用vim打开文件:vi 文件名。
3、按‘:’号键,输入查看文件的格式命令set ff或set fileformat。
4、可以看到格式是DOS的。
5、再按‘:’键输入set ff=unix 或 set fileformat=unix设置格式为unix的。
6、然后‘:’键后输入wq,保存,再重新运行就可以了。
注意事项:开始时要先确保权限chmod u+x 文件名。
但也有特殊情况,很多时候发现自己编译的程序明明是存在的,可是运行时候却会报No such file or directory的问题,原因不一,特地整理一下。
1、编译器的架构有差,这是发生在一次新的开发板的交叉编译中产生的,同样的程序用同样的工具链编译后,一个开发板正常,二另一个报No such file or directory,文件明明存在,这个问题在于arm-linux-guneabi-和arm-linux-guneabihf-这两个链的差别在于hf二字,这个是浮点单元的支持与否,选择错误会导致上述错误发生。
2、文件的确存在,缺少动态库,程序的确执行了,那个是缺少动态库所抛出的错误ldd <可执行文件名>查看可执行文件链接了哪些系统动态链接库。
3、windows下vscode编译出现这样的问题是因为文件名中有空格。解决办法:去掉空格。