【问题标题】:Ncurses static libraries to include with a C++ project包含在 C++ 项目中的 Ncurses 静态库
【发布时间】:2011-03-01 15:43:56
【问题描述】:

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

所以问题是 libncurses.a、libncurses++.a 和 libncurses_g.a 文件有什么区别?我的 C++ 项目需要所有这些吗?
谢谢!

【问题讨论】:

    标签: c++ ncurses


    【解决方案1】:
    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,您可以重命名库并运行应用程序的构建。

    【讨论】:

    • 非常感谢您的回答。我成功地使用 libncurses.a 编译了应用程序。出于某种原因,当我使用 libncurses++.a 时,我最终得到了一堆未定义的符号。但是,当我尝试运行应用程序时确实收到错误:打开终端时出错:xterm。当我编译安装了 ncurses 并链接到 lncurses 的应用程序时,一切都很好……在这种情况下我能做吗?
    • 使用静态链接到库的工作方式如下:this thread
    【解决方案2】:

    自从您 4 年多前发布您的问题以来,我的回答来得有点晚 [ :-) ]。但是:

    在您的 SVN 中存档预编译库意味着如果目标机器在某些关键方面有所不同,您构建的应用程序可能会失败。

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

    我建议另一种解决方案:将 libncurses 源(tarball)的最新稳定版本提交到您的 SVN 存储库,并添加一个运行 libncurses 构建并将构建的库安装到某个项目目录的小脚本(或 make 目标) (不是系统目录,而是在您的应用程序构建目录旁边,不提交到 SVN)。仅当需要升级库或您想在另一台机器上构建/运行时,才需要重复此构建步骤。

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

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

    • 包管理
    • 交叉编译

    【讨论】:

      猜你喜欢
      • 2018-01-17
      • 2017-01-03
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 2012-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多