无法在Ubuntu上静态链接到OpenSSL



按照这里给出的说明,我从这里下载了最新版本的OpenSSL (OpenSSL -1.0.1 .tar.gz)并将其安装在Ubuntu v12.10(32位)上。

我在Eclipse CDT (v1.2.0.201212170456)中有一个C项目,它静态链接到以下两个.a文件:

  • 家/usr/地方/ssl/lib/libcrypto。
  • 家/usr/地方/ssl/lib/libssl.a

然而,当我建立我的项目,我得到这些错误:

/home/tashimaya/Applications/CodeSourcery/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /usr/local/ssl/lib/libssl.a when searching for -lssl
/home/tashimaya/Applications/CodeSourcery/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1/../../../../arm-none-linux-gnueabi/bin/ld: cannot find –lssl

我的工具链是CodeSourcery (Sourcery g++ Lite 2010q1-202),适用于32位操作系统。

我做错了什么?

我使用的编译器命令行:

arm-none-linux-gnueabi-gcc -I"/path to my/include" -O0 -g3 -Wall -c -fmessage-length=0 -v -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.c"

您已经在Ubuntu 32位机器(假设是x86)上安装了OpenSSL,但正在尝试将其链接到ARM二进制文件:

    /home/tashimaya/Applications/CodeSourcery/bin/../lib/gcc/arm-none-linux-gnueabi:您的ARM工具链
  • /usr/local/ssl/lib/libssl.a: 32位x86版本的OpenSSL

您必须使用您的ARM工具链(即:arm-none-linux-gnueabi-gcc)交叉编译OpenSSL for ARM,然后您将能够将其链接到ARM二进制文件

它说/usr/local/ssl/lib/libssl。A没有达到预期的大小试一下file,看看你编译的是32位还是64位版本。检查一下你是如何编译你自己的程序的。如果两者都匹配,链接器(ld)将很好地链接。

如果你将你的程序编译成64位并链接到libssl。A是32位的,这不起作用

的例子:文件a.o ut

/* kind ofoutput */ a.out: Mach-O 64-bit executable x86_64

http://unixhelp.ed.ac.uk/CGI/man-cgi?文件

相关内容

  • 没有找到相关文章

最新更新