Сбой сборки GObject Introspection при генерации libgirepository_1_0_la-gdump.lo

При использовании MingW для кросс-компиляции библиотеки GObject Introspection, версия 1.31.22, я, похоже, столкнулся с проблемой. Настройка библиотеки, кажется, идет хорошо, но когда я начинаю ее создавать, файл make быстро заканчивается:

CC     libgirepository_1_0_la-gdump.lo
: No such file or directory: 
: No such file or directory: 
make[2]: *** [libgirepository_1_0_la-gdump.lo] Error 1

Просмотр подробного вывода (make V=1) показывает следующее:

make  all-recursive
make[1]: Entering directory `/opt/build/opensource/gobject-introspection-1.31.22'
Making all in .
make[2]: Entering directory `/opt/build/opensource/gobject-introspection-1.31.22'
/bin/bash ./libtool  --tag=CC   --mode=compile i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I.  -mms-bitfields -I/opt/build/windows/include/glib-2.0 -I/opt/build/windows/lib/glib-2.0/include -I/opt/build/windows/lib/libffi-3.0.12/include -I./girepository -DG_IREPOSITORY_COMPILATION -I/opt/build/windows/include -I/usr/i686-w64-mingw32/include -I/opt/build/windows/include/glib-2.0 -I/opt/build/windows/lib/glib-2.0/include/  -fno-strict-aliasing -Wsign-compare -Wcast-align -Wpointer-arith -Wnested-externs -Wmissing-prototypes -Wmissing-declarations -Wchar-subscripts -Wall -I/opt/build/windows/include -I/usr/i686-w64-mingw32/include -I/opt/build/windows/include/glib-2.0 -I/opt/build/windows/lib/glib-2.0/include/ -MT libgirepository_1_0_la-gdump.lo -MD -MP -MF .deps/libgirepository_1_0_la-gdump.Tpo -c -o libgirepository_1_0_la-gdump.lo `test -f 'girepository/gdump.c' || echo './'`girepository/gdump.c
libtool: compile:  i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -mms-bitfields -I/opt/build/windows/include/glib-2.0 -I/opt/build/windows/lib/glib-2.0/include -I/opt/build/windows/lib/libffi-3.0.12/include -I./girepository -DG_IREPOSITORY_COMPILATION -I/opt/build/windows/include -I/usr/i686-w64-mingw32/include -I/opt/build/windows/include/glib-2.0 -I/opt/build/windows/lib/glib-2.0/include/ -fno-strict-aliasing -Wsign-compare -Wcast-align -Wpointer-arith -Wnested-externs -Wmissing-prototypes -Wmissing-declarations -Wchar-subscripts -Wall -I/opt/build/windows/include -I/usr/i686-w64-mingw32/include -I/opt/build/windows/include/glib-2.0 -I/opt/build/windows/lib/glib-2.0/include/ -MT libgirepository_1_0_la-gdump.lo -MD -MP -MF .deps/libgirepository_1_0_la-gdump.Tpo -c girepository/gdump.c  -DDLL_EXPORT -DPIC -o .libs/libgirepository_1_0_la-gdump.o
make[2]: Leaving directory `/opt/build/opensource/gobject-introspection-1.31.22'
make[1]: Leaving directory `/opt/build/opensource/gobject-introspection-1.31.22'

Если я запускаю все вручную с первой строки, это удается. Если я запускаю все из второй строки после "libtool: compile:" вручную, это успешно. Затем я могу перейти к следующему шагу компиляции и использовать копирование-вставку для ручной компиляции каждой вещи. Однако, просто запустив make сам по себе, вы не сможете скомпилировать библиотеку.

Почему make не запускается самостоятельно, и как я могу это исправить?

Информация о настройке

ОС: Ubuntu 14.04

Make: GNU Make 3.81, созданный для x86_64-pc-linux-gnu

Python: 2.7.8 Я установил Python в Wine и связался с ним во время сборки.

Вино: 1.6.2

MingW: i686-w64-mingw32-gcc (GCC) 4.8.2

Настройка среды

export PREFIX=$CROSS_DIR/windows
export INSTALL_PREFIX=$PREFIX
export TOOLCHAIN_FILE=$PREFIX/toolchain_windows.cmake

export PLATFORM=WINDOWS

export HOST=i686-w64-mingw32
export BUILD=x86_64-linux-gnu

export COMPILER_INCLUDE_DIR=/usr/$HOST/include
export COMPILER_LIB_DIR=/usr/$HOST/lib
export MINGW_32_LIBS=/usr/lib/gcc/$HOST/4.8


export CFLAGS="-I$PREFIX/include -I$COMPILER_INCLUDE_DIR"
export CPPFLAGS="-I$PREFIX/include -I$COMPILER_INCLUDE_DIR"
export CXXFLAGS="-I$PREFIX/include -I$COMPILER_INCLUDE_DIR"
export LDFLAGS="-L$PREFIX/lib -L$COMPILER_LIB_DIR"
export XDG_DATA_DIRS="$PREFIX/share"

export LD_LIBRARY_PATH=$PREFIX/lib:$PREFIX/bin:$COMPILER_LIB_DIR
export LIBRARY_PATH=$PREFIX/lib:$PREFIX/bin:$COMPILER_LIB_DIR
export INCLUDE_PATH=$PREFIX/include:$COMPILER_INCLUDE_DIR
export C_INCLUDE_PATH=$PREFIX/include:$COMPILER_INCLUDE_DIR
export CPLUS_INCLUDE_PATH=$PREFIX/include:$COMPILER_INCLUDE_DIR


export CC=$HOST-gcc
export CXX=$HOST-g++
export LD=$HOST-ld
export RANLIB=$HOST-ranlib
export AR=$HOST-ar
export AS=$HOST-as
export STRIP=$HOST-strip


export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig

Сценарий сборки

#! /bin/bash

if [ ! -d "gobject-introspection-1.31.22" ]
then
   tar --xz -xf ./tars/gobject-introspection-1.31.22.tar.xz
fi
cd gobject-introspection-1.31.22


echo Compile gobject instrospection

./configure --build="$BUILD" --host="$HOST" --prefix="$PREFIX" \
            PKG_CONFIG="$PREFIX/bin/pkg-config.exe" \
            PYTHON="$WINE_PYTHON_PATH/python.exe" \
            PYTHON_INCLUDES="-I$WINE_PYTHON_PATH/include" \
            PYTHON_LIBS="-L$WINE_PYTHON_PATH/libs -lpython27" \
            PYTHON_LIB_LOC="$WINE_PYTHON_PATH/Lib" \
            CFLAGS="$CFLAGS -I$PREFIX/include/glib-2.0 -I$PREFIX/lib/glib-2.0/include/" \
            CPPFLAGS="$CPPFLAGS -I$PREFIX/include/glib-2.0 -I$PREFIX/lib/glib-2.0/include/" \
make clean
make 2>&1 | tee ../logs/39_gobject_introspection-make.log
make install 2>&1 | tee ../logs/39_gobject_introspection-makeinstall.log


cd ..

1 ответ

Решение

Я заметил, что, когда я перенаправил вывод команды make в текстовый файл с символами конца строки, содержащимися в окнах, "^M". Я исправил это, запустив (^M - это Ctrl+v Ctrl+m):

find ./ -name "Makefile" -exec sed -i "s/^M//" {} \;

Это, кажется, избавило меня от проблемы ошибок сборки libtool.

Для тех, кто интересуется, откуда берутся ^ M, это окончания строк в сгенерированных и установленных файлах pkg-config.

Другие вопросы по тегам