构建';libconfig';作为32位库
我试图将libconfig()用于我试图编写的一个小实用程序。我正在尝试构建libconfig,然后将库文件(libconfig.a)复制到我的实用工具的目录中。当我构建我的实用程序时,我会收到关于体系结构不兼容的警告。这是我收到的一条特别的警告信息构建';libconfig';作为32位库,c,linux,redhat,libconfig,C,Linux,Redhat,Libconfig,我试图将libconfig()用于我试图编写的一个小实用程序。我正在尝试构建libconfig,然后将库文件(libconfig.a)复制到我的实用工具的目录中。当我构建我的实用程序时,我会收到关于体系结构不兼容的警告。这是我收到的一条特别的警告信息 /usr/bin/ld:warning:i386:x86-64输入文件'libconfig.a(libconfig_la-libconfig.o)'的体系结构与i386输出不兼容 我正在构建一台Red Hat Enterprise Linux Se
/usr/bin/ld:warning:i386:x86-64输入文件'libconfig.a(libconfig_la-libconfig.o)'的体系结构与i386输出不兼容
我正在构建一台Red Hat Enterprise Linux Server 5.10版计算机(uname-m
products'x86\u 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位地址列出
注意:在配置脚本帮助输出中,它确实指出:
一些有影响的环境变量:
这意味着它们必须是环境变量,而不是作为参数传递给命令Petesh,感谢您提供的信息。不幸的是,我仍然无法创建32位库。我没有提到我心爱的IT部门在默认情况下让每个人都使用tsch,因此
evn CFLAGS-m32 LDFLAGS=-32
不起作用。我尝试用setenv在启动脚本(/.cshrc)中设置env变量,但这也不起作用。我从来没有看到过你表示的信息。我还尝试用#创建一个脚本/bin/bash
使用上面列出的命令,但该命令也不起作用。@lordhog-由于-m32
也会影响链接,我建议您尝试传递:env CC=“gcc-m32”。/configure…
@BrettHale,感谢您告诉我如何在tsch中正确发出该命令。一旦命令格式正确,configure命令就会工作,然后make
构建正确的库。我尝试了两个命令行版本(@Petesh和@BrettHale),并且都创建了一个与我的实用程序一起工作的库。但它们不是二进制等价的。我不确定差异是什么,也不知道如何确定,但diff确实告诉我它们是不同的。我对@BrettHale和@Petesh感激不尽。