【发布时间】:2012-01-09 06:47:50
【问题描述】:
我正在开发一个程序,它使用 autotools 构建系统并在 linux 上编译得很好。为了构建 Windows,我试图让 mingw 交叉编译器为 Windows 工作。现在,当我在 linux 上编译并移至 windows 时,我当然会丢失一些默认情况下未安装在 windows 上的 dll。这会导致缺少 dll 错误。由于 LGPL 的限制,我无法静态链接我的程序。
所以我的问题是在这种情况下交叉编译的正确方法是什么?我觉得我需要将我的 exe 包装在一个安装程序中,该安装程序会自动解析并安装 Windows 的 dll 依赖项,但我无法找到解释如何执行此操作的内容。基本上我在考虑 yum/apt-get for windows。如何管理 Windows 上的 dll 依赖项?我是 linux 人,不是 windows 人,所以请多多包涵。
【问题讨论】:
-
将 DLL 与 exe 放在同一文件夹中。您确实拥有 DLL 的重新分发权限吗?
-
嗨,David,我确实拥有再分发权,但我对 a 的执行方式不太感兴趣,而对正确的执行方式更感兴趣。例如。我可以自己编译 dll 并制作一个小脚本包装器,将这些 dll 复制到某个地方,但那时我可能会重新发明轮子。是否有一个普遍接受的包装器/安装程序可以为我执行此操作并与自动工具构建过程集成?我一直找不到类似的东西......
-
您可以使用 InnoSetup 之类的安装工具来生成安装程序。
-
我使用
find /usr -name '*libwinpthread*'(例如)然后检查路径并确保选择了正确的工具链和线程模型的结果,然后将其复制到本地目录。我正在考虑以某种方式完全自动化,这就是我正在研究这个问题的原因。如果我让它工作得相当好,我会发布一个答案。
标签: c++ dll mingw cross-compiling autotools