首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用ia32-libs

使用ia32-libs
EN

Stack Overflow用户
提问于 2012-02-03 17:08:09
回答 2查看 6.1K关注 0票数 2

我试图使用我从这里获得的64位运行的asmlibrary,但是预编译的静态库是为32位构建的。我真的不想重新编译库,因为我没有安装OpenCV 1.0,也不想安装这种旧版本的软件。

我的雇主告诉我,你可以使用ia32lib,这样我就可以在64位的机器上使用库了。我使用apt安装了这些库。

在我选择的IDE netbeans中,我现在正在尝试使用这个库。我一直收到这样的消息:

/usr/bin/ld:输入文件‘./asmlib/libasmlibrary.a ary.a(asm_shape.o)’的asm_shape.o体系结构与i 386:x86-64输出不兼容

等等。

我有两个问题:

( 1)我可以使用这个图书馆吗?

2)我必须如何“启用”它的使用,无论是一般的还是最好的特定于netbeans (如果适用的话)

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-03 17:28:36

一个可执行文件(包括它所依赖的库)必须完全是32位或64位。不能混合和匹配不同类型的对象文件。

因此,要使用32位库,必须将程序编译为32位可执行文件,并与32位版本的libc和其他核心库进行链接。在debian上,您需要像libc6-dev-i 386和ia32-libs-dev这样的包。

若要将foo.c编译为32位可执行文件,请使用

gcc -m32 -o foo.c

如何使用netbeans完成此操作是一个练习。

票数 5
EN

Stack Overflow用户

发布于 2012-02-03 17:42:59

我不认为您能够使用ia32-libs编译64位程序,使用32位库。这并不是ia32-lib所设计的.它的目的是在64位系统上完全运行32位程序

我认为你最好的选择是编译成32位的软件。如果使用的是命令行,则只需将-m32标志添加到gcc中即可。在netbeans中,在Properties > Build >C编译器(或者如果您正在使用C++编译器)中,有一个下拉列表来选择体系结构。如果该下拉列表中没有32位,则可以将-m32添加到附加选项框中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9132531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档