c - libgcrypt-config --libs : no such file or directory

标签 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)

最佳答案

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)

关于c - libgcrypt-config --libs : no such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35076278/

相关文章:

c -\c 和\\c 有什么区别?

C-编号检查功能给出无限循环

c - 我应该如何返回 C 库中二元运算函数的结果?

c - 使用 NetBeans 的 Linux 静态库中缺少符号

c - 如何从源文件中提取单个函数

c - 输入退出条件后陷入死循环。

c - 在 C 中使用递归函数进行冒泡排序

C++ 鼠标点击窗口中的特定位置

c - 在调试 calloc 相关错误时需要帮助,附加的代码最少

c - typedef 是存储类说明符吗?