Я использую QT и ed25519-donna lib для проверки моей подписи.
Linux Я использую этот lib => libssl-dev
MacOs Я использую этот lib => openssl
Так что, когда я пытаюсь скомпилировать с помощью Linux его работу, но когда я пытаюсь в MacOs, библиотеки donna выдают ошибку:
openssl/rand.h is not found
У меня есть эта строка в моем Makefile:
LIBS = $(SUBLIBS) -L/home/laion/Desktop/lethean-gui/lethean/lib -lwallet_merged -lepee -lunbound -leasylogging -lboost_serialization -lboost_thread -lboost_system -lboost_date_time -lboost_filesystem -lboost_regex -lboost_chrono -lboost_program_options -lssl -lcrypto -Wl,-Bdynamic -Wl,-Bdynamic -lunwind -ldl -lQt5Quick -lQt5Widgets -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core -lGL -lpthread
Когда вы смотрите на donna libs, вы можете увидеть файл ed25519.c, внутри которого есть вызов ed25519-randombytes.h, внутри этого файла есть файл openssl / rand.h.
Внутри моего .pro-файла я использую это:
macx {
# mixing static and shared libs are not supported on mac
# CONFIG(static) {
# message("using static libraries")
# LIBS+= -Wl,-Bstatic
# }
LIBS+= \
-L/usr/local/lib \
-L/usr/local/opt/openssl/lib \
-L/usr/local/opt/boost/lib \
-lboost_serialization \
-lboost_thread-mt \
-lboost_system \
-lboost_system-mt \
-lboost_date_time \
-lboost_filesystem \
-lboost_regex \
-lboost_chrono \
-lboost_chrono-mt \
-lboost_program_options \
-lssl \
-lcrypto \
-ldl
INCLUDEPATH += /usr/local/opt/boost/include/
}
Итак, если я добавлю этот путь в INCLUDEPATH:
/usr/local/opt/openssl/include \
/usr/local/opt/openssl/lib
Я получаю другую ошибку:
The program has unexpectedly finished.
// every donna file get this message
was built for newer osx version (10.13) than being linked (10.12)
Пока я получаю эту ссылку C ++, Mac OS X, Xcode 8: Повышение компиляции: установите цель развертывания на OS X 10.11 , и я возвращаюсь, чтобы сообщить вам, если работает
ИСПРАВЛЕНО << Проблема была в версии Mac. Для работы с donna и openssl необходимо 10.12+ для компиляции </p>