【发布时间】:2014-07-06 15:20:36
【问题描述】:
在我开始开发更多 c++ 项目之前,我想建立一个良好的多平台环境并使用一些基本的修订形式 (rsync)。为此,我不学习如何构造 makefile(使用 uname 变量),还开始在 windows 上的 cygwin 环境中使用 mingw。这样我就有希望在类似 Unix 的 shell 下以同质的方式在所有平台上进行开发。
我不明白的是分发依赖于动态库的编译程序的标准工作实践。例如,当我在 windows 上使用 mingw 编译时,我需要将最基本的库(libstdc++-6.dll)添加到可执行目录中才能运行。仅对于标准库,我需要添加三个 .dll,即使依赖 walker 显示了无数更多,尽管它似乎可以运行。
肯定每个库都需要包含,因为无法保证最终用户会在本地拥有它?
如果是这种情况,是否通常只将动态库包含在与可执行文件相同的目录中?
我还读到 .so 文件既可以用作导入库,也可以用作动态库。那么这些是否也需要包含在可执行目录中?
Cmake 对于这些事情很有用,我想我最终会使用它。这就是说我认为先学习如何在没有它的情况下完成跨平台开发对我有帮助。
【问题讨论】:
-
使用
git比使用rsync更好地进行版本控制。并考虑为您的软件制作一个软件包(例如*.deb),至少对于 Linux 而言。 -
这是真的,我想学习如何使用 git,Linux/Mac 似乎比 windows 更容易管理。例如,我想知道的是您的分布式包中是否包含标准库?
标签: c++ dependencies cross-platform dynamic-library