如何在64位系统上以32位模式编译openSSL?

Gar*_*ker 32 openssl 32bit-64bit

我有一个程序,目前必须以32位模式(现在)编译,并需要与包含实验密码的openSSL版本链接.因此我需要编译一个32位的openSSL.运用

./config -m32 
Run Code Online (Sandbox Code Playgroud)

导致-m32和-m64都包含在编译器标志中.

Gar*_*ker 28

风滚草徽章提醒我回来自己回答!我让它工作的方式是使用:

setarch i386 ./config -m32
Run Code Online (Sandbox Code Playgroud)


Isk*_*ren 14

不幸的是,setarch不是我的LFS系统上的有效命令,所以我必须以不同的方式执行:

./Configure shared threads zlib-dynamic --prefix=/usr --openssldir=/etc/ssl -m32 linux-generic32
Run Code Online (Sandbox Code Playgroud)

注意:这是使其按OP愿望工作的最小示例:

./Configure -m32 linux-generic32
Run Code Online (Sandbox Code Playgroud)


har*_*mic 7

我遇到了类似的问题,除了我试图在Solaris x86机器上编译.Solaris中没有setarch,因此我无法使用其他答案中建议的更简单的方法.

OpenSSL的'config'脚本是一个shell包装器,它确定它认为是目标系统的内容,然后调用'Configure'perl脚本,这将完成繁重的任务.Configure有许多内置目标:您可以使用'perl Configure TABLE'来获取所有目标的列表.这是从可用列表中选择所需目标的情况.

因此,如果您想强制它为其认为应该的目标而构建目标,您可以直接调用"配置",传递所需目标的名称.例如,为了使我的Solaris 32位构建工作,我使用了:

./Configure solaris-x86-cc --shared
Run Code Online (Sandbox Code Playgroud)

或者,如果是原始问题,如果它是Linux系统,您可以使用:

./Configure linux-generic32 --shared
Run Code Online (Sandbox Code Playgroud)