使用GCC编译文件main.f, 前面的编译都通过了,但到了link环节,提示“ld: cannot open C:\Program: No such file or directory"
这是mak文件link部分的代码
FC_Objects =
Main.$(FC_Suffix)
CC_Objects =
UserLibs =
SysLibs = $(EmtdcBin)\libwsock32.a $(EmtdcBin)\libf2c.lib
Binary = 252kV63kAT10.exe
$(Binary): $(FC_Objects) $(CC_Objects) $(UserLibs)
@echo !--Link: $@
$(Link) "$(EmtdcMain)" $(FC_Objects) $(CC_Objects) $(UserLibs) "$(EmtdcLib)" $(SysLibs)
targets: $(Binary)
!--Link: 252kV63kAT10.exe
gcc.exe -o 252kV63kAT10.exe "C:\PROGRA2\PSCAD41\emtdc\gnu\windows\main.obj" M
ain.o "C:\PROGRA2\PSCAD41\emtdc\gnu\windows\emtdc.lib" C:\PROGRA2\PSCAD41
emtdc\gnu\windows\libwsock32.a C:\PROGRA2\PSCAD41\emtdc\gnu\windows\libf2c.lib
ld: cannot open C:\Program: No such file or directory
make: *** [252kV63kAT10.exe] Error 1
在C盘建立了Program文件夹后,重新编译,提示
ld: cannot open C:\Program: Permission denied
make: *** [252kV63kAT10.exe] Error 1 ,修改权限仍然提示无法访问,在windows下,文件夹下新建文件修改文件均没有问题, 新建program文件(不清楚是什么文件),编译显示C:\Program: file not recognized: File truncated
请问如何可以完成编译,生成252kV63kAT10.exe
杀毒软件、防火墙关闭、查看进程、重新启动均报相同的错误,查看lds未见有关C:\Program的内容,不清楚为什么会出现这个目录,mak文件里没有指定该目录,这是lds的片段:
OUTPUT_FORMAT(pei-i386)
SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/egcs-1.1/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/egcs-1.1/i386-mingw32/lib);
ENTRY(_mainCRTStartup)
这个 C:\Program 路径有可能是编译的时候中间文件夹,比如存放obj等文。可以把编译的里面的一些路径和存放编译出来的中间文件存放的路径打印出来看看,还有link的时候也可以打印路径看看
Cannot open: No such file or directory的解决方法
https://blog.csdn.net/chenchen2360060/article/details/103755214
重新创建项目,放在没有空格的路径里。
或者dir /x检查文件夹的短文件名是否正确。
看看任务栏是不是已经有之前编译的exe文件在运行
“ld: cannot open C:\Program: No such file or directory"
“ld:无法打开C:\Program:没有这样的文件或目录”
ld: cannot open C:\Program: Permission denied
make: *** [252kV63kAT10.exe] Error 1
ld:无法打开C:\Program:权限被拒绝
制造商:***[252kV63kAT10.exe]错误1
C:\Program: file not recognized: File truncated
C: \Program:无法识别文件:文件被截断
你这实践操作的三次报错,都和权限,路径有关,这边建议做以下排查:
1、该路径下是否有该文件或者其他多个文件
2、将拦截关闭
3、杀掉进程,重新打开再次编译,编译前确认编译环境