2

我想为我的项目安装 PBC 库。在我的 64 位系统上,配置脚本很容易安装 64 位库。但是我必须使用的代码是建立在 32 位上的。

我试过这个命令(来自这个问题的答案):

./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"

但是当我运行 'make' 时出现此错误:

/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-field.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-z.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-naivefp.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-fastfp.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-fp.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-fasterfp.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-montfp.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-multiz.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-dlog.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-fieldquadratic.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-poly.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-random.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-init_random.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-darray.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-symtab.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-get_time.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-utils.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-memory.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-extend_printf.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-mpc.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-mnt.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-hilbert.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-curve.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-pairing.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-singular.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-param.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-a_param.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-d_param.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-e_param.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-f_param.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `.libs/libpbc_la-g_param.o' is incompatible with i386 output

'--help' 列出了以下标志:

Some influential environment variables:
CC          C compiler command
CFLAGS      C compiler flags
LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir>
LIBS        libraries to pass to the linker, e.g. -l<library>
CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir>
CPP         C preprocessor
Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations.
4

2 回答 2

2

首先,检查:

./configure --help

它是否允许覆盖 CFALGS/LDFLAGS?

如果是,请按照帮助信息进行操作。其次,通常,./configure 会生成 makefile,然后您发出“make”命令。您说,您在配置后遇到此错误?

如果您在 make 之后遇到这些错误,那么看起来 ld 正在与旧残基链接。

你试过了吗:

make clean;make
于 2012-12-29T17:32:48.307 回答
0

谢谢@Icarus3。你为我指明了正确的方向。我使用的命令是:

./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"

当我跑

./configure --help

它没有CXXFLAGS。所以我把它改成了CPPFLAGS=-m32. 它奏效了。

于 2012-12-30T05:26:51.243 回答