使用共享库进行交叉编译

时间:2012-02-08 00:19:12

标签: c linux arm embedded-linux

我对嵌入式系统不感兴趣。我正在使用一个使用ARM9的套件TS-7390。 我设法为它编译了一个应用程序。我的问题是如何使用共享库进行编译。我需要在主机上安装这个库吗?

3 个答案:

答案 0 :(得分:3)

这取决于共享库的使用方式。如果使用库编译应用程序,就像共享库一直链接一样,是的,您需要在主机上使用它。如果共享库是通过dlopen动态加载的,则主机上不需要它。在这两种情况下,您还需要在目标上使用该库。

答案 1 :(得分:2)

简而言之:是的。

让我解释一下原因。设置交叉编译环境时,需要同时具有头文件和库,因为在链接时,编译器会检查是否已解析所有符号。

您可以想象,只要您的程序不使用libc,交叉编译器就不够了。在这种情况下,您还需要一个拥有所有必需文件(标题,库等)的地方。由于处理所有依赖项可能非常耗时,因此通常最好使用某种工具或发行版为您执行此操作。

例如,我使用OpenEmbedded,这需要一些时间来学习,但是当你必须处理库时可以帮助你很多。

答案 2 :(得分:1)

在交叉编译应用程序之前,还需要交叉编译共享库。