Installation glib安装:在x86_64位(64位)计算机上安装32位glib库

Installation glib安装:在x86_64位(64位)计算机上安装32位glib库,installation,glib,libtool,systemtap,Installation,Glib,Libtool,Systemtap,我从这里下载了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/d

我从这里下载了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 $@

glib使用的介子构建脚本不会传递在配置时指定的
CC
设置。Systemtap的
dtrace
工具使用环境中的
CC
,因此您可以这样调用make:

CC="/local/common/pkgs/gcc/v6.3.0p2/bin/gcc -m32" make

或者,您可以在配置时使用
--disable dtrace
禁用这些探测,如果您不需要它们。

顺便说一句,我使用了--disable dtrace,并能够构建glib库。不确定我的应用程序是否需要探测。创建glib库之后。当我尝试在我的应用程序中使用该库时,我面临的问题是:未定义的符号:pthread\u key\u create.No,您必须在调用
make
期间设置
CC
。你不太可能需要探测器,它们只用于调试。Florian,我们的回归失败了,出现了恍惚错误。不确定是不是因为跳过建筑探测之类的。。我希望在创建构建时包含探测内容。设置环境变量和触发make应该正常工作吗?例如setenv CC'/local/common/pkgs/gcc/v6.3.0p2/bin/gcc-m32',然后在'make'
setenv
之后听起来像csh,我不太熟悉。但它应该起作用。也许生成的makefile做了一些有趣的事情。如果一切都失败了,您可以为
gcc
引入一个包装器脚本,并将其放在
路径上。
CC="/local/common/pkgs/gcc/v6.3.0p2/bin/gcc -m32" make