libgcrypt-config --libs:没有这样的文件或目录

时间:2016-01-29 03:17:48

标签: c

我正在使用gcrypt,但我的编译器似乎无法找到它。这是我的makefile。 function.c是一个函数源文件,包含我定义的函数;我还用函数声明编写了一个头文件miao.h,其中包含了gcrypt.h。 main.c是包含miao.h的源文件。当我做的时候:enter image description here。有人能帮帮我吗?这困扰了我很久。

CC = gcc
CFLAGS = 'libgcrypt-config --cflags'
LIBS = 'libgcrypt-config --libs'
OBJS = function.o main.o main

all: $(OBJS)

function.o: function.c
    $(CC) -c function.c $(CFLAGS)

main.o: main.c
    $(CC) -c main.c  $(CFLAGS)

main: main.o function.o
    $(CC) -o main main.o function.o $(LIBS)

clean:
    rm $(OBJS)

1 个答案:

答案 0 :(得分:0)

makefile应该写得更像以下内容:

警告:我无法测试makefile,因为我没有libgcrypt-config可用。

根据网站:https://gnupg.org/documentation/manuals/gcrypt/Building-sources.html libgcrypt-config是可执行文件,所以应该用反向标记包围,而不是单引号,因此它将在当前shell中执行。

(stackoverflow上的后退标记将导致强调文本,但仍应显示它们应放置的位置。)

注意:我放置<tab>你的实际makefile需要有一个制表符

注意:目标(如allclean)不会生成具有相同名称的文件,因此在文件的早期需要声明:.PHONY: all clean

在定义宏时,使用:=而不是=,因此宏只会被评估一次。

任何对shell函数的调用都应该通过宏合并,因此很容易进行更改。一般来说,最好包含shell函数的路径:我在Linux上写了这个,你的路径可能不同。交叉编译时指定实际路径变得非常重要,或者通过$ PATH语句可以看到重复的名称(gcc很容易发生)

注意:实际的libgcrypt-config可执行文件必须通过$ PATH环境变量可见。

注意:所有单独的编译语句可以简化为以下两行:(并且编译时不需要其他任何内容)

%.o: %.c 
<tab>$(CC)  -c $< -o $@ -I. $(CFLAGS)

注意:请勿将规则的内容放在需要dependencies的位置。 clean:目标

中记录了此错误

建议的makefile如下:

CC := /usr/bin/gcc
RM := /usr/bin/rm

CFLAGS := `libgcrypt-config --cflags`

LIBS := `libgcrypt-config --libs`

OBJS := function.o main.o main

TARGET := main

.PHONY: all clean

all: $(TARGET)

function.o: function.c
<tab>$(CC) -c function.c $(CFLAGS) -o function.o -I.

main.o: main.c
<tab>$(CC) -c main.c  $(CFLAGS) -o main.o -I.

$(TARGET): $(OBJS)
<tab>$(CC) -o $(TARGET) $(OBJS) $(LIBS)

clean:
<tab>$(RM) -f $(OBJS)