Makefile с включенным флагом OpenSSL LDLIBS, выдающий ошибку - PullRequest
0 голосов
/ 31 октября 2018

Я могу запустить и скомпилировать мою программу-пример с openssl, используя

gcc azureconn.c -o azureconn -lssl -lcrypto

но когда я пытаюсь скомпилировать с использованием make-файла с флагом LDLIBS в make-файле, это приводит к ошибке как неопределенной ссылке 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

Error

неопределенная ссылка на OPENSSL_init_ssl collect2: ошибка: ld возвращено 1 статус выхода

1 Ответ

0 голосов
/ 31 октября 2018

Так как вы изменили свой вопрос. В каком модуле есть функция main(...)? Я предположил, что это был azureconn.c, так как вы сказали, что можете скомпилировать это.

gcc azureconn.c -o azureconn -lssl -lcrypto

Попробуйте использовать такое правило для сборки исполняемого файла;

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

Правило %.o:%.c обычно не используется для связи, просто создайте объектные файлы, как следует из названия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...