gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:40:42 27 4
gpt4 key购买 nike

我正在使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com