我想在C中开发可执行文件并共享此可执行文件,它可以在其他目标系统上运行。开发系统是Linux 64Bit,目标系统是Linux ARM系统。我开发它是因为使用共享库的懒惰,但如果我分享它,肯定它不会工作,因为共享对象丢失。我尝试通过从源代码构建库来从共享库更改为静态库,因为它没有提供静态库,但是当我尝试构建项目时,它会给出未定义的引用错误。这应该与丢失的Header文件有关。但是如果我在构建过程中包含Header文件,那么当我分发它们时会出现同样的问题。
是否有可能使用库但构建一个独立的可执行文件,我不必安装或复制其他东西,但可执行文件到目标系统?
交叉编译工作正常,只是库会产生问题。
答案 0 :(得分:1)
如果您正在使用库中的函数,您可以选择使用动态库(并要求安装或自行安装)
或使用将与您的程序结合的静态库(如果您可以构建静态库)
尝试使用静态库进行构建时,最常出现的问题是,您可能还需要与该库所依赖的任何其他库进行静态链接。
答案 1 :(得分:1)
在谈论交叉可比性时,您希望避免静态链接。因为这些库已经可以在ARM系统上构建和调试。您只需将该架构的已经工作的共享库安装到系统上,然后您的程序就可以正常工作。
您还面临着这些共享库依赖于其他共享库的问题。那些你也必须重建。所以到那天结束时你将拥有3GB的可执行文件。
我建议你做一些包装练习(哦,不,他说)。创建一个.deb或.rpm,它将为您安装依赖库。