【问题标题】:C Link Library Independant to Build独立构建的 C 链接库
【发布时间】:2016-12-21 15:33:27
【问题描述】:

我想用 C 语言开发一个可执行文件并共享这个可执行文件,它可以在其他目标系统上运行。开发系统为Linux 64Bit,目标系统为Linux ARM系统。我开发它是因为懒惰使用共享库,但如果我共享它,肯定它不会工作,因为共享对象丢失了。我试图通过从源代码构建库来从共享库更改为静态库,因为它不提供静态库,但是当我尝试构建项目时,它会给出未定义的引用错误。这应该与缺少的头文件有关。但是如果我在构建过程中包含头文件,当我分发它们时也会出现同样的问题。

是否有可能使用库但构建一个独立的可执行文件,我不必安装或复制其他东西,但可执行文件到目标系统?

交叉编译工作正常,只是库会出问题。

【问题讨论】:

  • 你考虑过分享 C 源代码吗?

标签: c linux shared-libraries static-libraries cross-compiling


【解决方案1】:

如果您使用库中的函数,您可以选择使用动态库(并要求安装它,或者自己安装)

或使用将与您的程序结合的静态库(如果您可以构建静态库)

尝试使用静态库构建最常见的问题是,您可能还需要与该库还依赖的任何其他库进行静态链接。

【讨论】:

    【解决方案2】:

    在谈论交叉可比性时,您希望避免静态链接。因为这些库已经可以在 ARM 系统上构建和调试。您只需将用于该架构的已在工作的共享库安装到系统上,然后您的程序就可以正常工作了。

    您还面临这些共享库依赖于其他共享库的问题。那些你也必须重建。所以到一天结束时,您将拥有一个 3GB 的可执行文件。

    我建议您对包装进行一些练习(哦,不,他说过)。创建一个 .deb 或 .rpm 来为您安装依赖库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      • 2014-07-05
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多