相关疑难解决方法(0)

如何使用OpenSSL编译.c文件包括?

我正在尝试编译一个包含以下内容的小型.c文件:

#include <openssl/ssl.h>
#include <openssl/rsa.h>
#include <openssl/x509.h>
#include <openssl/evp.h>
Run Code Online (Sandbox Code Playgroud)

在我拥有.c文件的同一个文件夹中,我有一个/ openssl包含所有这些文件(以及更多),同样在synaptic包管理器中我看到安装了OpenSSL,我试图用这个编译:

gcc -o Opentest Opentest.c -lcrypto
Run Code Online (Sandbox Code Playgroud)

但我总是得到错误:

error: openssl/ssl.h: No such file or directory
error: openssl/rsa.h: No such file or directory
error: openssl/x509.h: No such file or directory
error: openssl/evp.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我想编译的文件只是一个.c文件,没有Makefile或./configure.

我已经尝试过:

env CFLAGS=-I/path/to/openssl/
Run Code Online (Sandbox Code Playgroud)

并尝试再次编译,但我得到相同的错误.

我应该怎么做才能用openssl编译包括?

c linux compiler-construction openssl compiler-errors

67
推荐指数
4
解决办法
16万
查看次数

如何使用相对rpath编译OpenSSL

我一直在尝试使用以下rpath编译openssl 1.0.0g:

$ORIGIN/../lib64
Run Code Online (Sandbox Code Playgroud)

每次我readelf -d apps/openssl,我得到的结果如下,取决于我尝试的逃避变化:

\RIGIN/../lib64
RIGIN/../lib64
ORIGIN/../lib64
Run Code Online (Sandbox Code Playgroud)

我想在不使用像chrpath这样的外部工具的情况下设置我的rpath.它可能吗?我基本上会接受任何不涉及使用像chrpath这样的外部工具的东西(虽然我已经完成了).

理想情况下,我想通过在命令行(任何形式-Wl,-rpath,$ORIGIN/../lib64)上传递选项来实现.

我不介意编辑生成的Makefile,这是我最后一次尝试的.如果我能打印出一个愚蠢的美元符号!我尝试在BUILDENV =块下修改LIBRPATH而没有运气.到目前为止我的最好成绩:

LIBRPATH=$$'ORIGIN/../lib64 # result: /../lib64
LIBRPATH=$$$$'ORIGIN/../lib64 # result: 12345<pid>/../lib64 
Run Code Online (Sandbox Code Playgroud)

我已经阅读了各种与rpath相关的问题,并尝试了各种转义和引用技巧但到目前为止没有任何工作!

openssl makefile rpath

8
推荐指数
2
解决办法
3916
查看次数

静态编译openssl二进制文件

从源tarball构建时,由config&make命令生成的openssl二进制文件动态链接到以下库:

    linux-vdso.so.1 =>  (0x00007fffa75fe000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff7f79ab000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff7f75e2000)
    /lib64/ld-linux-x86-64.so.2 (0x00007ff7f7bd2000)
Run Code Online (Sandbox Code Playgroud)

我的猜测是,如果我可以静态链接到lib gcc,则对其他共享库的依赖关系也将消失。

问题是如何获取配置脚本以生成静态链接的二进制文件

在Windows上构建的过程也一样吗?

openssl

5
推荐指数
2
解决办法
7200
查看次数

构建OpenSSH时缺少OpenSSL头文件

我想从源代码构建具有特定OpenSSL版本的某个OpenSSH版本,但是我收到以下错误:

mkdir /tmp/ssh
cp openssh-6.7p1.tar.gz /tmp/ssh
cp openssl-1.0.1l.tar.gz /tmp/ssh
cd /tmp/ssh
tar zxvf openssl-1.0.1l.tar.gz
cd openssl-1.0.1l
./config --prefix=/tmp/ssh
make
make install
cd ..
tar zxvf openssh-6.7p1.tar.gz
cd openssh-6.7p1
./configure --with-ssl-dir=/tmp/ssh --prefix=/tmp/ssh

...
checking openssl/opensslv.h usability... no
checking openssl/opensslv.h presence... no
checking for openssl/opensslv.h... no
configure: error: *** OpenSSL headers missing - please install first or check config.log ***
Run Code Online (Sandbox Code Playgroud)

openSSH的配置脚本中是否有错误或者我是否需要更改任何命令?

openssl openssh

5
推荐指数
2
解决办法
2万
查看次数

架构 x86_64 (clang) 的未定义符号

我正在尝试使用 OpenSSL 从 ac 程序计算 sha1 哈希。我正在 Mac OS X Yosemite 上使用 Intel i7(所以 64 位)使用 clang 进行编译。

相关的一段代码大致如下:

#include <openssl/evp.h>
...
unsigned char outHash[20]; 
hash("SHA1","abcd", 20, outHash);
Run Code Online (Sandbox Code Playgroud)

问题是,当使用来自 的“散列”函数时openssl/evp.h,使用 clang 进行编译会产生以下错误:

#include <openssl/evp.h>
...
unsigned char outHash[20]; 
hash("SHA1","abcd", 20, outHash);
Run Code Online (Sandbox Code Playgroud)

所以看起来链接器没有找到 OpenSSL(“哈希”函数未识别)。有想法该怎么解决这个吗?

编辑:

事实证明,我试图使用一个不存在的函数(“哈希”) - 抱歉误导您。

但是我仍然有同样的问题:包括openssl/evp.h似乎不起作用。

这是我正在使用的哈希函数,它使用 evp 来执行 sha1 编码:

unsigned int hash(const char *mode, const char* dataToHash, size_t dataSize, unsigned char* outHashed) {
    unsigned int md_len = -1;
    const EVP_MD *md = …
Run Code Online (Sandbox Code Playgroud)

c macos openssl llvm clang

5
推荐指数
1
解决办法
6552
查看次数