linux下编译C++程序,出现
/usr/bin/ld: 无法打开输出文件 a.out: 权限不够
collect2: error: ld returned 1 exit status
看了网上说有一个可能是多个终端或多个线程在同时读写a.out这个文件,此时可以通过ps -ef|grep a.out
得到a.out的pid,直接kill
而有时只有单终端,此时有可能是文件夹的权限不够,比如源文件的目录为\home\cplus\hw.cpp
则在\home
下通过ls -al
命令查看各文件/文件夹的所属用户组与权限
如我的为drwxr-xr-x 2 root root 4096 9月 cplus
知道rwx分别表示读写运行权限,说明该目录从属root,且仅对root开放写权限,很明显对用户自身是不开放写权限的,也就是a.out无法输入到该目录下
因此修改拥有者sudo chmod xxx cplus
xxx为自己的计算机名,此时可解决