Установка glib: установка 32-битной библиотеки Glib на компьютере x86_64bit (64bit) - PullRequest
1 голос
/ 10 ноября 2019

Я скачал источники glib 2.56 отсюда:

https://download.gnome.org/sources/glib/2.56/

А затем я пытаюсь собрать и установить 32-битную библиотеку glib на 64-битной платформе x86_64, используя следующие команды: -

../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 указывает на сценарий libtool, который был создан после запуска сценария ./configure. Я упомянул CC= '/local/common/pkgs/gcc/v6.3.0p2/bin/gcc -m32' для настройки скрипта, но этот конкретный файл glib_probes.o создается с 64-битной архитектурой. Не уверен, что не так при создании библиотеки 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

1 Ответ

1 голос
/ 10 ноября 2019

Сценарий сборки Meson, который использует glib, не пропускает параметр CC, указанный во время настройки. Инструмент dtrace Systemtap использует CC из среды, поэтому вы можете вызвать make следующим образом:

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

Кроме того, вы можете отключить эти датчики во время настройки, используя --disable-dtrace, если они вам не нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...