我已从此处下载glib 2.56来源:
https://download.gnome.org/sources/glib/2.56/
然后我尝试使用以下命令在64位x86_64平台上构建和安装32位glib库:-
../configure CC='/local/common/pkgs/gcc/v6.3.0p2/bin/gcc -m32' CXX='/local/common/data/gcc/v6.3.0p2/bin/g++ -m32' CFLAGS='-fPIC -O2' CXXFLAGS='-fPIC -O2' LD_LIBRARY_PATH=/local/common/data/gcc/v6.3.0p2/lib LDFLAGS=-m32 --enable-static=yes --prefix=/home/gout/source_glib/32bit_glib/glib-2.56.1/glib_32bit --enable-libmount=no PYTHON=/local/common/data/python/v2.7.6/bin/python --with-pcre=/home/gout/pcre_32bit/pcre-8.20/pcre_install
make
make install
同时构建代码(使用'make'命令)。我遇到以下问题:-
/local/common/pkgsData/gcc-v6.3.0p2/Linux/RHEL6.0-2013-x86_64/bin/ld: i386:x86-64 architecture of input file `.libs/glib_probes.o' is incompatible with i386 output
我发现该文件'glib_probes。正在使用64位架构创建。
[gout@il-gout glib]$ file .libs/glib_probes.o
.libs/glib_probes.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
通过命令创建特定文件:-
/bin/sh ../libtool --mode=compile --silent --tag=CC dtrace -G -s ../../glib/glib_probes.d -o glib_probes.lo
我们从glib源代码运行上述命令的规则是:-
glib_probes.lo: glib_probes.d
$(AM_V_GEN) $(LIBTOOL) --mode=compile $(AM_V_lt) --tag=CC $(DTRACE) -G -s $< -o $@
变量LIBTOOL
指向运行./configure脚本后创建的libtool
脚本。我已经提到了CC= '/local/common/pkgs/gcc/v6.3.0p2/bin/gcc -m32'
来配置脚本,仍然使用64位体系结构来创建此特定文件glib_probes.o
。不确定在创建glib库时出了什么问题。
我已验证除上述文件以外,所有其他文件都是使用32位体系结构创建的。请帮助我解决此问题。此问题导致无法创建libglib-2.0.la
CCLD libglib-2.0.la
/local/common/data/gcc-v6.3.0p2/Linux/RHEL6.0-2013-x86_64/bin/ld: i386:x86-64 architecture of input file `.libs/glib_probes.o' is incompatible with i386 output
glib使用的Meson构建脚本不会传递配置时指定的CC
设置。 Systemtap的dtrace
工具使用环境中的CC
,因此您可以这样调用make:
CC="/local/common/pkgs/gcc/v6.3.0p2/bin/gcc -m32" make
或者,如果不需要,可以在配置时使用--disable-dtrace
禁用那些探针。