Как скомпилировать Berkeley DB 5.3.28 для кросс-компилятора MXE? - PullRequest
0 голосов
/ 01 июня 2018

Есть ли у кого-нибудь решение для построения Berkeley DB для среды кросс-компиляции MXE?

Когда я запускаю свой скрипт сборки:

 #!/bin/bash

 MXE_PATH=~/mxe

 db=db-5.3.28

 rm -rf ./$db/build_mxe
 mkdir -p ./$db/build_mxe
 cd ./$db/build_mxe

 sed -i "s/WinIoCtl.h/winioctl.h/g" ../src/dbinc/win_db.h

 CC=$MXE_PATH/usr/bin/i686-w64-mingw32.static-gcc \
 CXX=$MXE_PATH/usr/bin/i686-w64-mingw32.static-g++ \

 ../dist/configure \
     --build=x86_64-pc-linux-gnu \
     --host=x86 \
     --disable-replication \
     --enable-cxx \
     --enable-mingw \
     --prefix=~/dev/mingw_db

  make -j6; make -j6 install

Компилятор предупреждает об отсутствии direct.h:

../src/dbinc/win_db.h:21:20: fatal error: direct.h: No such file or directory compilation terminated.

direct.h и все зависимые файлы существуют в mxe / usr / i686-w64-mingw32.static / include каталог

Итаккак заставить компилятор использовать эти файлы?

1 Ответ

0 голосов
/ 27 августа 2018

Разработчики MXE постепенно улучшали процесс сборки для deps MXE.В Berkeley DB теперь легко скомпилировать нужную версию, используя make db в исходном MXE-файле, и, если вам нужна конкретная версия, вы можете изменить ее в src / db.mk.и снова запустите make db, чтобы обновить файлы соответственно.

Во время процесса make есть одна ошибка, из-за которой libtool неправильно находит двоичные файлы db из-за текущего исправления db (src / db-2-install-exe.patch) в MXE, которое применяется во время компиляции.дБ, который будет признан устаревшим.Тем не менее, тем временем исправление заключается в удалении файла исправления db и добавлении следующего флага в src / db.mk с другими параметрами конфигурации после (MXE_CONFIGURE_OPTS):

--program-transform-name='s,.exe,,;s,\(.*\),\1.exe,' \

Это намного проще и обеспечивает чистоту / управляемость исходного кода MXE, чем использование специального сценария компиляции для BDB.

...