我可以使用openssl运行和编译我的c示例程序
gcc azureconn.c -o azureconn -lssl -lcrypto
但是,当我尝试使用makefile中带有LDLIBS标志的makefile进行编译时,由于未定义的参考OPENSSL_Init而导致错误
下面是我的make文件
DEFINES = $(GDEFINES)
INCLUDES = $(DIR_PATH)
CFLAGS = $(GCFLAGS) $(DEFINES) $(INCLUDES) -D_GNU_SOURCE
LDLIBS = -lssl -lcrypto
MAIN_OBJECTS = xxxx.o yyy.o zzz.o \
aaaa.o
all: $(MAIN_OBJECTS)
mv $(MAIN_OBJECTS) $(BIN_PATH)
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@ $(LDLIBS)
clean:
rm -rf *.o
错误
未定义对“ OPENSSL_init_ssl” collect2的引用:错误:返回了ld
1个退出状态
最佳答案
由于您已更改问题。哪个模块具有main(...)
功能?我以为是azureconn.c,因为您说过可以编译。
gcc azureconn.c -o azureconn -lssl -lcrypto
尝试使用这样的规则来构建可执行文件;
azureconn:
$(CC) $(CFLAGS) azureconn.c -o $@ $(LDLIBS)
%.o:%.c
规则通常不用于链接,只是按照名称含义创建目标文件关于c - 启用了OpenSSL LDLIBS标志的Makefile并给出错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53087178/