【发布时间】:2011-03-01 15:43:56
【问题描述】:
我已经安装了我的项目正在使用的最新 ncurses 库。现在,我想将 ncurses 静态库签入到 svn 中,这样我就可以在另一台机器上签出项目并编译它,而无需再次在系统上安装 ncurses。
所以问题是 libncurses.a、libncurses++.a 和 libncurses_g.a 文件有什么区别?我的 C++ 项目需要所有这些吗?
谢谢!
【问题讨论】:
我已经安装了我的项目正在使用的最新 ncurses 库。现在,我想将 ncurses 静态库签入到 svn 中,这样我就可以在另一台机器上签出项目并编译它,而无需再次在系统上安装 ncurses。
所以问题是 libncurses.a、libncurses++.a 和 libncurses_g.a 文件有什么区别?我的 C++ 项目需要所有这些吗?
谢谢!
【问题讨论】:
libncurses.a - This is the C compatible library.
libncurses++.a - This is the C++ compatible library.
libncurses_g.a - This is the debug library.
libncurses_p.a - This is the profiling library.
如果您想知道是否可以不使用 libncurses.a,您可以重命名库并运行应用程序的构建。
【讨论】:
自从您 4 年多前发布您的问题以来,我的回答来得有点晚 [ :-) ]。但是:
在您的 SVN 中存档预编译库意味着如果目标机器在某些关键方面有所不同,您构建的应用程序可能会失败。
是的,您可以在完全以相同方式配置的其他机器上安全地运行应用程序(例如,在完全同构的计算集群上)。但是,如果机器不同(例如,因为一台机器进行了系统升级而另一台没有),它可能会停止工作。这不太可能,因此对于您想做的事情,风险可能是可以接受的。
我建议另一种解决方案:将 libncurses 源(tarball)的最新稳定版本提交到您的 SVN 存储库,并添加一个运行 libncurses 构建并将构建的库安装到某个项目目录的小脚本(或 make 目标) (不是系统目录,而是在您的应用程序构建目录旁边,不提交到 SVN)。仅当需要升级库或您想在另一台机器上构建/运行时,才需要重复此构建步骤。
这不适用于特殊的 ncurses 库,但适用于任何库。
根据你的项目目标,考虑进一步阅读
【讨论】: