将'libconfig'构建为32位库

时间:2014-08-22 22:27:44

标签: c linux redhat libconfig

我正在尝试使用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'

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

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

有没有人知道如何将libconfig构建为32位库以便正确使用。

谢谢,
标记

1 个答案:

答案 0 :(得分:2)

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

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

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

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

  

一些有影响力的环境变量:

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