我的目录结构是/home/akshayaj/Desktop/System Programs/dictionary/
在字典里面我有3个文件:
两个C文件都包含头文件
现在我为上面的项目编写了一个make文件。它是这样的: -
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中,我已经给出了完整的路径,因为我在一个类似的问题中看到了它,但那并没有起作用。这是该问题的链接。
C Compile Error (No such file or directory, compilation terminated)
答案 0 :(得分:1)
尝试使用路径/home/akshayaj/Desktop/System\ Programs/dictionary/
,其中\
处理空间。
答案 1 :(得分:1)
考虑如何解析该命令行...
cc -I /home/akshayaj/Desktop/System Programs/dictionary/ -c libentrypoint.c
^^ ^------------------------------^ ^------------------^ ^-----------------^
| | | |
Command -I arg BAD ARG -c arg
正如您所看到的,"系统"之间的空间。和"节目"被读作两个命令args之间的分隔符。
您的选择是:
更改路径以移除空间(推荐)。例如/home/akshayaj/Desktop/System-Programs/dictionary/
。
在空格前添加反斜杠以逃避它。 e.g:
/home/akshayaj/Desktop/System\ Programs/dictionary/
作为一般规则,在使用make构建东西或者只是构建一般东西时使用带有空格的路径是不明智的。这使得这样的含糊不清难以解决。