2011-03-01 40 views
1

我已经安装了我的项目正在使用的最新的ncurses库。现在,我想将ncurses静态库检入到svn中,这样我就可以在另一台机器上签出项目并编译它,而无需再次在系统上安装ncurses。Ncurses静态库包含一个C++项目

所以问题是libncurses.a,libncurses ++。a和libncurses_g.a文件有什么区别?我是否需要将它们全部用于我的C++项目?
谢谢!

回答

2
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,您可以重命名该库并运行应用程序的构建版本。

+0

非常感谢您的回答。我成功地能够用libncurses.a编译应用程序。出于某种原因,当我使用libncurses ++时,我最终得到了一堆未定义的符号。 但是,当我尝试运行应用程序时出现错误:打开终端时出错:xterm。当我编译安装了ncurses的应用程序并链接到lncurses时,一切都很好......我可以在这种情况下执行吗? – ravil 2011-03-01 20:11:09

+0

是否使用静态链接到库工作如:[this thread](http://stackoverflow.com/questions/3514852/statically-link-ncurses-to-program) – 2011-03-02 18:44:56

1

由于您发布的问题超过4年前,我的答案有点晚[:-)]。但是:

在SVN中归档预编译的库意味着如果目标机器在某些关键方面存在差异,则您的内置应用程序可能会失败。

是的,您可以安全地在完全以相同方式配置的其他机器上运行应用程序(例如,在完全同类的计算群集上)。但是,如果机器不同(例如,因为一台机器有系统升级而另一台机器没有升级),它可能停止工作。这不太可能,所以你想做什么风险可能是可以接受的。

我会建议另一种解决方案:将一个最近稳定版本的libncurses源代码(tarball)提交到您的SVN仓库并添加一个运行libncurses构建的小脚本(或制作目标),并将构建的库安装到某个项目目录(不是系统目录,而是在你的应用程序构建目录旁边,没有提交到SVN)。如果升级库或者您想在另一台机器上构建/运行,则只需重复构建步骤。

这不适用于特殊的ncurses库,但适用于任何库。

根据项目的目标,考虑进一步阅读有关

  • 包管理
  • 交叉编译
相关问题