使用ia32-libs

时间:2012-02-03 17:08:09

标签: linux netbeans x86 ia-32

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

我的雇主告诉我,您可以使用ia32-libs,这样我就可以在64位计算机上使用该库。我已经使用apt。

安装了这些库

在netbeans中,我选择的IDE,我现在正在尝试使用该库。我不断收到消息:

  

/ usr / bin / ld:输入文件的i386架构   `../asmlib/libasmlibrary.a(asm_shape.o)'与...不兼容   i386:x86-64输出

等。

我有两个问题:

1)ia32-libs允许我使用这个库吗?

2)我如何“启用”它的使用,通常或最好特定于netbeans(如果适用)

谢谢

2 个答案:

答案 0 :(得分:5)

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

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

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

  

gcc -m32 -o foo foo.c

如何使用netbeans将其作为练习。

答案 1 :(得分:1)

我认为你不能使用32位库来使用ia32-libs编译64位程序。这不是ia32-libs的设计目的......它旨在在64位系统上运行完全32位程序

我认为最好的选择是编译为32位软件。如果您使用的是命令行,则可以将-m32标记添加到gcc。使用netbeans,在项目属性>构建> C编译器(或C ++编译器,如果你正在使用它),有一个下拉选择架构。如果该下拉列表中没有32位,您可以将-m32添加到其他选项框中。