2015-03-25 4 views
1

Я пытаюсь кода некоторых с кода OpenSSL ...C: Компиляция проекта OpenSSL

Скажем, у меня есть файл hello.c, использование которого OpenSSL.

hello.c

... 
#include <openssl/rand.h> 
#include <openssl/ssl.h> 
#include <openssl/err.h> 
... 

Вот мой makefile:

Makefile

CC=gcc 
CFLAGS=-W -Wall -ansi -pedantic 
LDFLAGS= 
EXEC=hello 

all: $(EXEC) 

hello: hello.o main.o 
    $(CC) -o [email protected] $^ $(LDFLAGS) 

%.o: %.c 
    $(CC) -o [email protected] -c $< $(CFLAGS) 

run: 
    ./$(EXEC) 

.PHONY: clean mrproper 

clean: 
    rm -rf *.o 

mrproper: clean 
    rm -rf $(EXEC)` 

Когда я бегу Makefile я получаю эту ошибку:

hello.c:4:26: fatal error: openssl/rand.h no such file or directory 
#include <openssl/rand.h> 

Что нужно добавить в make-файл, чтобы компиляция работала? Я не смог найти ни одного ясного примера.

+1

первую очередь, найти путь из заголовков библиотеки OpenSSL и передать его в gcc с параметром '-I'. Затем продолжайте и сделайте то же самое для файлов lib (или переключитесь на систему сборки, такую ​​как cmake, которая обрабатывает этот неудобный материал для вас: http://www.cmake.org/cmake/help/v3.0/module/FindOpenSSL .html) – stefan

+0

Вам нужно найти путь, который содержит путь 'openssl', и добавить' -IThePathYouFound' в 'CFLAGS' – ForceBru

+1

Те, которые должны быть установлены в стандартных местах и ​​не должны иметь специальный флаг' -I'. У вас есть файлы заголовков openssl? В большинстве дистрибутивов они не входят в обычный пакет, и вам нужен соответствующий пакет '-dev' или' -devel'. –

ответ

1

Проблема была в том, что openssl действительно был установлен, но не пакеты -devel.

Как я на OpenSUSE, вот пакеты, необходимые, в Yast: enter image description here

Благодаря @Etan Рейснер и @Marian

Смежные вопросы