我正在尝试使用我从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(如果适用)
谢谢
答案 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
添加到其他选项框中。