我可以使用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/

10-09 13:18