gpt4 book ai didi

linux - 如何为 MXE 交叉编译器编译 Berkeley DB 5.3.28?

转载 作者:太空狗 更新时间:2023-10-29 12:39:36 38 4
gpt4 key购买 nike

有人为 MXE 的交叉编译环境构建 Berkeley DB 的解决方案吗?

当我运行构建脚本时:

 #!/bin/bash

MXE_PATH=/path/to/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=/path/to/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 目录中

那么如何强制编译器使用这些文件呢?

最佳答案

MXE 开发人员已经慢慢改进了 MXE 部门的构建过程。 Berkeley DB 现在可以在 MXE 源代码中使用 make db 轻松编译您需要的版本,如果需要特定版本,您可以在 src/db.mk 中更改它。再次运行 make db 将相应地更新文件。

由于 MXE 中的当前数据库补丁 (src/db-2-install-exe.patch) 在编译数据库期间应用,因此在 libtool 无法正确找到数据库二进制文件的 make 过程中存在一个错误被弃用。但是,与此同时,修复方法是删除 db 补丁文件并在 src/db.mk 中添加以下标志以及 (MXE_CONFIGURE_OPTS) 之后的其他配置选项:

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

与使用 BDB 的自定义编译脚本相比,这更简单并且使 MXE 源代码更清洁/更易于管理。

关于linux - 如何为 MXE 交叉编译器编译 Berkeley DB 5.3.28?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50639135/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com