我正在做一个密码学项目,一切似乎都运行得很顺利。我们的教授为我们提供了骨架(包括makefile(。然而,现在我得到了这个错误:
gcc -O2 -Wall -c ske.c -o ske.o
In file included from ske.c:1:
./ske.h:4:10: fatal error: 'openssl/aes.h' file not found
#include <openssl/aes.h>
^~~~~~~~~~~~~~~
1 error generated.
make: *** [ske.o] Error 1
我试着添加
CPPFLAGS="-I/usr/local/opt/openssl/include"
到makefile,并已安装和卸载openssl。此外,错误并不局限于aes.h头文件,我见过sha.h和其他一些文件。这是我的makefile:
SOURCES := $(wildcard *.c)
OBJECTS := $(SOURCES:.c=.o)
HEADERS := $(wildcard *.h)
TARGETS := kem-enc
TSOURCE := $(wildcard tests/*.c)
TESTS := $(TSOURCE:.c=)
COMMON := -O2 -Wall
CFLAGS := $(CFLAGS) $(COMMON)
CC := gcc
LDADD := -lcrypto -lssl -lgmp
LD := $(CC)
LDFLAGS := -L/usr/local/opt/openssl/lib
DEFS :=
ifeq ($(shell uname),Linux)
DEFS += -DLINUX
endif
IMPL := ske.o rsa.o kem-enc.o
ifdef skel
IMPL := $(IMPL:.o=-skel.o)
endif
all : $(TARGETS)
.PHONY : all
# {{{ for debugging
debug : CFLAGS += -g -DDEBUG=1
debug : $(TARGETS) $(TESTS)
.PHONY : debug
# }}}
$(OBJECTS) : %.o : %.c $(HEADERS)
$(CC) $(CFLAGS) -c $< -o $@
$(TARGETS) : $(IMPL) prf.o
$(LD) $(LDFLAGS) -o $@ $^ $(LDADD)
tests : $(TESTS)
.PHONY : tests
$(TESTS) : % : %.o $(filter-out kem-enc.o,$(IMPL)) prf.o
$(LD) $(LDFLAGS) -o $@ $^ $(LDADD)
.PHONY : clean
clean :
rm -f $(OBJECTS) $(TARGETS) $(TESTS) $(TSOURCE:.c=.o)
我正在运行Mac OS Mojave。有人知道怎么解决这个问题吗??
工作正常。以下是我所做的。
- 已从
LDADD
中删除-lopenssl
标志 - 在已经存在的文本之后添加
-I/usr/local/opt/openssl/include
到CFlAGS
现在它工作了!!