Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 目标公司不知何故没有';不要被创造_C_Gcc_Makefile_Gnu - Fatal编程技术网

C 目标公司不知何故没有';不要被创造

C 目标公司不知何故没有';不要被创造,c,gcc,makefile,gnu,C,Gcc,Makefile,Gnu,我有一个目标,它没有得到创建,但它的直接依赖关系得到创建。并且没有错误消息 以下是生成文件: PREFIX?=/home/jenia/learn-c-the-hard-way CFLAGS=-g -Wall -I${PREFIX}/lib/include LDFLAGS=-L${PREFIX}/lib INSTALL_DIR=/home/jenia/learn-c-the-hard-way/apps all: set-manipulation set-manipulation: main.o

我有一个目标,它没有得到创建,但它的直接依赖关系得到创建。并且没有错误消息

以下是生成文件:

PREFIX?=/home/jenia/learn-c-the-hard-way
CFLAGS=-g -Wall -I${PREFIX}/lib/include
LDFLAGS=-L${PREFIX}/lib
INSTALL_DIR=/home/jenia/learn-c-the-hard-way/apps

all: set-manipulation
set-manipulation: main.o

install: all
    install -d $(INSTALL_DIR)/set-manipulation
    install set-manipulation $(INSTALL_DIR)/set-manipulation

clean:
    rm -f *.o
    rm -f set-manipulation
    rm -rf *.dSYM
我最终得到的是
main.o
文件,而不是
set manipulation
文件,该文件是程序的名称

就像在一个更大的程序中,我想先创建对象文件,然后再创建程序。像

all: my-amazing-prog

my-amazing-prog: A.o B.o C.o D.o

...
然后以以下文件结束:

A.o, 
B.o, 
C.o, 
D.o, 
my-amazing-prog
所以我不明白为什么在这种情况下,我在创建object.o文件和依赖它们的prgram时会遇到麻烦

附言

以防万一,以下是目录结构:

  /home/jenia/learn-c-the-hard-way/lib:
  drwxr-xr-x  2 jenia jenia 4096 Nov  1 12:47 include
  -rwxr-xr-x  1 jenia jenia 6804 Nov  1 12:47 set_theory.a -- 50
  -rwxr-xr-x  1 jenia jenia 9664 Nov  1 12:47 set_theory.so -- 11


  /home/jenia/learn-c-the-hard-way/lib/include:
  -rw-r--r--  1 jenia jenia   85 Nov  1 12:47 bag.h -- 3
  -rw-r--r--  1 jenia jenia   64 Nov  1 12:47 new.h -- 2
  -rw-r--r--  1 jenia jenia   92 Nov  1 12:47 object.h -- 3
  -rw-r--r--  1 jenia jenia  318 Nov  1 12:47 set.h -- 16

您需要一条规则,告诉make如何从
main.o
创建
set操纵。本部分:

set-manipulation: main.o
仅指定依赖项,但不指定命令。使用,例如

set-manipulation: main.o
      $(CC) -o "$@" main.o
我很确定如果

my-amazing-prog: A.o B.o C.o D.o

确实创建了
my Azing prog
您确实有一些与之相关的命令。Make有一些内置规则,可以从单个源文件
prog.c
创建程序
prog
,也许这就是您在其他地方看到的工作情况?

您需要一个规则,告诉Make如何从
main.o
创建
设置操作。本部分:

set-manipulation: main.o
仅指定依赖项,但不指定命令。使用,例如

set-manipulation: main.o
      $(CC) -o "$@" main.o
我很确定如果

my-amazing-prog: A.o B.o C.o D.o

确实创建了
my Azing prog
您确实有一些与之相关的命令。Make有一些内置规则,可以从单个源文件
prog.c
创建程序
prog
,也许这就是您在其他地方看到的工作情况?

您发布的Make文件不完整,因为没有创建
main.o
的规则。请发布@m.s.:从源文件(如
main.c
)创建
main.o
通常不需要明确的规则。当然,如果目录列表显示存在
main.c
,则更具说服力,但这是另一个问题。您发布的Makefile不完整,因为没有创建
main.o
的规则。请发布@m.s.:从源文件(如
main.c
)创建
main.o
通常不需要明确的规则。当然,如果目录列表显示存在
main.c
,这会更有说服力,但这是另一个问题。谢谢。我更改了makefile如下:
set manipulation:main.o$(CC)$(LDFLAGS)$(CFLAGS)-o“$@”main.o
,但现在链接器找不到头或库。下面是一个示例:
main.o:In function main':/home/jenia/learn-c-the-hard-way/objects-oriented-c/set-manipulations/main.c:9:set'
的未定义引用之前,没有出现此错误。我编辑了该问题以添加libs和头文件的文件结构,这是编译器在错误消息之前输出的内容:
cc-g-Wall-I/home/jenia/learn-c-the-hard-way/lib/include-c-o main.c cc-L/home/jenia/learn-c-the-hard-way/lib-g-Wall-I/home/jenia/learn-c-the-hard-way/lib/include-o“set-manipulation”main.o
@JeniaIvanov,无法工作;如果链接,则不能使用
-c
(仅编译)选项。链接或编译。谢谢。我更改了makefile如下:
set manipulation:main.o$(CC)$(LDFLAGS)$(CFLAGS)-o“$@”main.o
,但现在链接器找不到头或库。下面是一个示例:
main.o:In function main':/home/jenia/learn-c-the-hard-way/objects-oriented-c/set-manipulations/main.c:9:set'
的未定义引用之前,没有出现此错误。我编辑了该问题以添加libs和头文件的文件结构,这是编译器在错误消息之前输出的内容:
cc-g-Wall-I/home/jenia/learn-c-the-hard-way/lib/include-c-o main.c cc-L/home/jenia/learn-c-the-hard-way/lib-g-Wall-I/home/jenia/learn-c-the-hard-way/lib/include-o“set-manipulation”main.o
@JeniaIvanov,无法工作;如果链接,则不能使用
-c
(仅编译)选项。链接或编译。