2014-04-29 60 views
0

我的目录结构是/home/akshayaj/Desktop/System Programs/dictionary/无法了解运行make

字典里给出的错误,我有3个文件:

  • libdictionary.c(实现所有功能,除了主),
  • libentrypoint .C(包含主()),
  • libdictionary.h(包含的所有功能声明)

两个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)

+3

请你帮个忙,不要使用您的路径空间(或其他奇怪的字符)的代码。您可以节省自己引用生成文件和其他构建基础架构的难题。 – Mat

+2

上面的Mat是什么意思:你的路径'/ home/akshayaj/Desktop/System Programs/dictionary /'包含一个空格字符,它打破了'cc'的路径。 'cc'将其解释为_two_分开的路径。您必须逃避该空间,或者包装路径,或按照建议和智能:不要在文件夹名称中使用这些空格。 – arkascha

回答

1

尝试使用路径/home/akshayaj/Desktop/System\ Programs/dictionary/,其中\处理的空间。

1

想想命令行如何解析...

cc -I /home/akshayaj/Desktop/System Programs/dictionary/ -c libentrypoint.c 
^^ ^------------------------------^ ^------------------^ ^-----------------^ 
|    |       |      | 
Command  -I arg      BAD ARG    -c arg 

正如你所看到的,“系统”和“程序”之间的空间被解读为两个命令ARGS之间的隔板。

你的选择要么是:

  1. 变化,使得空间被删除(推荐)的路径。例如/home/akshayaj/Desktop/System-Programs/dictionary/

  2. 添加一个反斜杠的空间之前逃吧。例如: -

    /home/akshayaj/Desktop/System\ Programs/dictionary/ 
    

作为一般规则,这不是明智的使用使建筑的东西的时候,还是刚刚建立的东西,一般在他们使用的路径用空格。这使得这样的含糊不清很难解决。

相关问题