gpt4 book ai didi

c++ - 我如何在 Linux 上的 Qt 程序中包含 OpenSSL?

转载 作者:搜寻专家 更新时间:2023-10-31 00:53:35 25 4
gpt4 key购买 nike

在我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com