C 无法理解运行make时给出的错误
我的目录结构是C 无法理解运行make时给出的错误,c,linux,gcc,makefile,C,Linux,Gcc,Makefile,我的目录结构是/home/akshayaj/Desktop/System Programs/dictionary/ 在字典中,我有3个文件: libdictionary.c(实现除main之外的所有函数) c(包含main()) h(包含所有函数的声明) 两个C文件都包含头文件 现在,我为上述项目编写了一个make文件。事情是这样的:- CFLAGS=-I /home/akshayaj/Desktop/System Programs/dictionary/ libdict: libentry
/home/akshayaj/Desktop/System Programs/dictionary/
在字典中,我有3个文件:
- libdictionary.c(实现除main之外的所有函数)
- c(包含main())
- h(包含所有函数的声明)
CFLAGS=-I /home/akshayaj/Desktop/System Programs/dictionary/
libdict: libentrypoint.o libdictionary.o
cc $(CFLAGS) -o libdict libentrypoint.o libdictionary.o
libentrypoint.o: libentrypoint.c libdictionary.h
cc $(CFLAGS) -c libentrypoint.c
libdictionary.o: libdictionary.c libdictionary.h
cc $(CFLAGS) -c libdictionary.c
现在,当我运行它时,我得到了以下错误:-
cc -I /home/akshayaj/Desktop/System Programs/dictionary/ -c libentrypoint.c
cc: error: Programs/dictionary/: No such file or directory
make: *** [libentrypoint.o] Error 1
我哪里做错了
注意:-在CFLAGS中,我给出了整个路径,因为我在一个类似的问题中看到了它,但这不起作用。这里是这个问题的链接
尝试使用路径
/home/akshayaj/Desktop/System\Programs/dictionary/
,其中\
处理空间。考虑如何解析该命令行
cc -I /home/akshayaj/Desktop/System Programs/dictionary/ -c libentrypoint.c
^^ ^------------------------------^ ^------------------^ ^-----------------^
| | | |
Command -I arg BAD ARG -c arg
如您所见,“系统”和“程序”之间的空格被读取为两个命令参数之间的分隔符
您的选择是:
/home/akshayaj/Desktop/System Programs/dictionary/
/home/akshayaj/Desktop/System\ Programs/dictionary/
作为一般规则,在使用make构建东西时,或者仅仅在一般情况下构建东西时,使用带有空格的路径是不明智的。这使得像这样的歧义很难解决。帮自己一个忙,不要在路径中使用空格(或其他奇怪的字符)作为代码。你可以省去引用makefiles和其他构建基础设施的麻烦。上面Mat的意思是:你的路径
/home/akshayaj/Desktop/System Programs/dictionary/
包含一个空格字符,它会打断cc
的路径cc
将其解释为两条独立的路径。您或者必须转义该空间,或者包装路径,或者按照建议和明智的做法:不要在文件夹名称中使用此类空间。