1

我正在尝试将 libconfig ( http://www.hyperrealm.com/libconfig/ ) 用于我正在尝试编写的一个小实用程序。我正在尝试构建 libconfig,然后将库文件 (libconfig.a) 复制到我的实用程序目录中。当我构建我的实用程序时,我收到有关架构不兼容的警告。这是我收到的具体警告信息之一。

/usr/bin/ld: warning: i386:x86-64 architecture of input file 'libconfig.a(libconfig_la-libconfig.o)' is incompatible with i386 output

我正在 Red Hat Enterprise Linux Server 5.10 版机器(uname -m生产'x86_64')上构建。我尝试使用以下内容构建 libconfig:

configure --disable-cxx CFLAGS='-m32' LDFLAGS='-m32'

但不幸的是,这似乎没有产生正确的库,因为我仍然看到相同的警告。在构建过程中创建了其他实用程序,并且所有实用程序共享 make common make 指令,这些指令指定CFLAGS = -m32 -Wextra -Wall -Werror -Osand LDFLAGS = -m32,因此我无法更改此行为。

我也试过configure --disable-cxx CFLAGS='-arch i386' LDFLAGS='-arch i386了,但是这个命令行不会构建库。

有谁知道如何将 libconfig 构建为正确使用的 32 位库。

谢谢,
马克

4

1 回答 1

2

configure脚本将忽略CFLAGS=在命令行上传递时的参数。您需要设置它们以调用配置,例如:

env CFLAGS=-m32 LDFLAGS=-m32 ./configure --disable-cxx

完成此操作后,在重建库时,结果中列出的所有符号lib/.libs/libconfig.a都以 32 位地址列出。

请注意在配置脚本帮助输出中它确实说:

一些有影响的环境变量:

这意味着它们需要是环境变量,而不是作为参数传递给命令

于 2014-08-23T07:24:18.543 回答