我正在尝试使用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服务器5.10版机器(uname -m
products'x86_64'
)。我尝试用以下方法构建libconfig:configure --disable-cxx CFLAGS='-m32' LDFLAGS='-m32'
但不幸的是,这似乎没有产生正确的库,因为我仍然看到相同的警告。在构建过程中还创建了其他实用程序,并且所有实用程序共享make common make指令,这些指令指定CFLAGS = -m32 -Wextra -Wall -Werror -Os
和LDFLAGS = -m32
,因此我无法更改此行为。
我也尝试过configure --disable-cxx CFLAGS='-arch i386' LDFLAGS='-arch i386
,但此命令行不会构建库。
是否有人知道如何将libconfig构建为一个32位库,以便正确使用。
谢谢,
作记号
最佳答案
当在命令行上传递时,configure
脚本将忽略像CFLAGS=
这样的参数。您需要为调用configure设置它们,例如:
env CFLAGS=-m32 LDFLAGS=-m32 ./configure --disable-cxx
完成此操作后,重建库时,结果
lib/.libs/libconfig.a
中列出的所有符号都将以32位地址列出。注意:在配置脚本帮助输出中,它确实说明:
一些有影响的环境变量:
这意味着它们必须是环境变量,而不是作为参数传递给命令
关于c - 将'libconfig'构建为32位库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25456418/