0

我正在尝试在 Ubuntu 12.04 64 位上构建一个 c++ 项目。该项目是32位的。在终端输出我收到这样的行:

ibcrypto.a(bio_b64.o)' 与 i386 输出不兼容

/usr/bin/ld: 输入文件 `/usr/lib/x86_64-linux-gnu/libcrypto.a(bio_asn1.o)' 的 i386:x86-64 体系结构与 i386 输出不兼容

collect2: ld 返回 1 个退出状态

make[2]: * [linux/release_32/cesmagent] 错误 1

我认为它与 libssl0.9.8 有关,但所以我做了“sudo apt-get install libssl0.9.8:i386”,但已经有了它的最新版本。

任何人都可以在这里帮助我吗?

4

2 回答 2

0

链接器正在尝试链接 64 位版本,libcrypto.a因为它找不到 32 位版本。

你说你有这个:

$ locate libcrypto.a
/usr/lib/x86_64-linux-gnu/libcrypto.a

然而,你需要这个:

$ locate libcrypto.a
/usr/lib/i386-linux-gnu/libcrypto.a

(我以为你可以同时拥有两者,但事实证明,在 12.04 上,由于包冲突,不可能同时拥有两者。)

您可以像这样安装 i386 库:

sudo apt-get install libssl-dev:i386

基本上,您可能正确安装了运行时库,但没有开发人员库。

于 2013-09-03T09:37:44.187 回答
0

解决我的问题的解决方法:

我安装了 32 位版本库

sudo apt-get install libssl-dev:i386

64位库被删除了。在目录 /usr/lib/i386-linux-gnu 我找到了 32 位版本的 libcrypto.a 并将它放在 /usr/lib32

然后我安装了 64 位库

sudo apt-get install libssl-dev

在目录 /usr/lib/x86_64-linux-gnu 我找到了 64 位版本的 libcrypto.a 并把它放在 /usr/lib64

在项目的 Makefile 中,我将路径 /usr/lib32/libcrypto.a 和 /usr/lib64/libcrypto.a 调整为依赖于相应的命令参数。

项目建成!

于 2013-09-03T14:15:14.637 回答