我正在尝试在64位Ubuntu 12.04上构建一个c ++项目。 该项目是32位。 在终端输出端,我收到了这样的行:
ibcrypto.a(bio_b64.o)'与i386输出不兼容
/ usr / bin / ld:i386:x86-64输入文件架构`/ usr / lib / x86_64-linux- gnu / libcrypto.a(bio_asn1.o)'与i386输出不兼容
collect2:ld返回1退出状态
make [2]: * [linux / release_32 / cesmagent]错误1
我认为这与libssl0.9.8有关,但我做了“sudo apt-get install libssl0.9.8:i386”,但已经有了它的最新版本。
任何人都可以帮助我吗?
答案 0 :(得分: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
基本上,您可能已正确安装了运行时库,但您没有开发人员库。
答案 1 :(得分: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以依赖于相应的命令参数。
项目构建!