yocto工程软件包编译依赖关系

最近在搞一个yocto上的编译问题,问题是这样的,我们有两个模块A和B,编译的时候先编译的A模块再编译B模块,B模块的编译依赖A模块的A.so文件,理论上讲,先编译的A模块,那么A模块编译完后生成了A.so,然后B模块去连接A模块的A.so是没有问题的,但是在编译的时候出现了A.so找不到的问题,起始以为自己路径写错了,但看了下,指定的路径里面A.so是存在的,但就是在连接的时候找不到A.so,从而没有了思绪。


后来我观察编译过程发现,yocto工程编译的时候,每个模块的编译都分为好几个步骤,大体有do_configure、do_compile、do_populate_lic、do_install、do_package、do_populate_sysroot、do_packagedata、do_package_write_rpm、do_package_pa、do_build这几个步骤,一看我直接傻眼了,要把这些全部研究清楚,估计黄花菜都凉了。不过在观察的时候不难发现一位问题,在这些编译步骤中,并不是A模块执行完了这些步骤,然后B模块再执行这些步骤,而是A、B这两个模块在编译的时候这些步骤是穿插在一起的,也就是是说整个编译过程并不是顺序执行的,那么就会出现一个问题,如果A模块的A.so还没有产生,而B模块就开始编译的话,就有可能出现我遇到的这种情况,到此为止,我深信,我遇到的编译问题应该就是这个问题导致的。


那么如何来验证我的猜想,如果解决这个编译问题呢?


既然两个模块的编译时混差在一起,那么这个工程应该会提供一种策略,来定义编译的依赖关系,来保证我的这个问题可以解决。在工程文件里面找了一下,在模块对应的bb文件中有一个名为DEPENDS的变量,从字面意思上看,可能是定义某种依赖关系的,我就在B模块对应的bb文件中的DEPENDS参数后面加上了A模块,下面是见证奇迹的时刻了,修改后编译成功!

你可能感兴趣的:(编译)