C链接库独立构建

时间:2016-12-21 15:33:27

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

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

我建议你做一些包装练习(哦,不,他说)。创建一个.deb或.rpm,它将为您安装依赖库。