启用了OpenSSL LDLIBS标志的Makefile并给出错误

时间:2018-10-31 15:39:09

标签: c makefile openssl

我能够使用

使用openssl运行和编译我的c示例程序
gcc azureconn.c -o azureconn -lssl -lcrypto

但是当我尝试在make文件中使用带有LDLIBS标志的makefile进行编译时,由于未定义的参考OPENSSL_Init而导致错误 以下是我的制作文件

    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个退出状态

1 个答案:

答案 0 :(得分:0)

自从您更改了问题。哪个模块具有main(...)功能?我以为是azureconn.c,因为您说过可以编译。

gcc azureconn.c -o azureconn -lssl -lcrypto

尝试使用这样的规则来构建可执行文件;

azureconn: 
    $(CC) $(CFLAGS) azureconn.c -o $@ $(LDLIBS)

%.o:%.c规则通常不用于链接,只是创建顾名思义的目标文件