在我的Qt程序中,我必须将字符串转换为哈希。我想在Debian上使用OpenSSL。我的代码的简短说明:
#include <openssl/sha.h>
...
unsigned char data[] = "data to hash";
unsigned char hash[SHA512_DIGEST_LENGTH];
SHA512(data, sizeof(data) - 1, hash);
我已经安装了openssl和libssl-dev。而且我也更改了.pro文件,如下所示:
TEMPLATE = app
QT = core gui
HEADERS += window.h
PKGCONFIG += openssl //found in another solution, but it does not work
LIBS += -L/usr/share/doc libssl-dev
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
SOURCES += main.cpp window.cpp
在LIBS中,我尝试了使用
sudo dpkg -L libssl-dev
获得的所有可能位置。有人我想念的吗?它不会编译,我确定是可以编译的。谢谢。
链接时出现以下错误:
/usr/lib/x86_64-linux-gnu/qt4/bin/qmake -o Makefile App.pro
g++ -m64 -Wl,-O1 -o App main.o window.o moc_window.o -L/usr/lib/x86_64-linux-gnu -L/usr/share/doc/libssl-dev -libssl-dev -lQtGui -lQtCore -lpthread
/usr/bin/ld: cannot find -libssl-dev
collect2: error: ld returned 1 exit status
Makefile:105: recipe for target 'App' failed
make: *** [App] Error 1
最佳答案
通常,如果该库是libsomelib.so
,则必须使用-lsomelib
导入它,并且在这种情况下,假设您已使用系统工具安装了该库,则无需传递路径,只需添加以下内容即可,因为该库是libssl.so
:
LIBS += -lssl -lcrypto
或者您也可以使用pkg-config:
PKGCONFIG += libssl
其中
/usr/lib/pkgconfig/libssl.pc
是:prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: OpenSSL-libssl
Description: Secure Sockets Layer and cryptography libraries
Version: 1.1.0g
Requires.private: libcrypto
Libs: -L${libdir} -lssl
Libs.private: -ldl
Cflags: -I${includedir}
关于c++ - 如何在Linux上的Qt程序中包含OpenSSL?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48242866/