Makefile C++;由于静态库不兼容,项目无法生成 我试图在Ubuntu 12.04 64位上构建一个C++项目。 该项目是32位的。 在终端输出端,我接收到这样的线路:

Makefile C++;由于静态库不兼容,项目无法生成 我试图在Ubuntu 12.04 64位上构建一个C++项目。 该项目是32位的。 在终端输出端,我接收到这样的线路:,makefile,g++,ubuntu-12.04,Makefile,G++,Ubuntu 12.04,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个退出状态 生成[2]:*[linux/release_32/cesmagent]错误1 我原以为它与libssl0.9.8有关,但后来我做了“sudo apt get install libssl0.9.8:i

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个退出状态

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

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


有人能帮我吗?

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

你说你有这个:

$ locate libcrypto.a
/usr/lib/x86_64-linux-gnu/libcrypto.a
鉴于,您需要:

(我原以为两个都可以,但事实证明,在12.04,两个都不可能,因为包冲突。)

可以按如下方式安装i386库:

sudo apt-get install libssl-dev:i386

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

解决我问题的解决方法:

我安装了32位版本库

sudo apt get安装libssl dev:i386

64位库已被删除。 在目录/usr/lib/i386LinuxGNU中,我找到了32位版本libcrypto.a,并将其放在/usr/lib32中

然后我安装了64位库

sudo apt get安装libssl dev

在目录/usr/lib/x86_64-linux-gnu中,我找到了64位版本libcrypto.a,并将其放在/usr/lib64中

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


项目构建

locate libcrypto.a
是否说明了您的期望?它返回的路径与错误消息中的路径相同,这将有助于构建32位项目。但碰巧我也需要64位版本的libssl。不幸的是,关于包冲突,您是对的,这里描述了:我建议LXC创建一个32位的12.04,这样您就可以将它们分开。
sudo apt-get install libssl-dev:i386