背景
最近编译dpdk代码的时候出现了一个奇怪的现象,同一份代码在不同的机器上,出现了一个能够编译通过,一个编译不过的情况。
问题分析
对比2台编译机器,发现主要的差异性在于 pkg-config版本不一致,导致生成的编译参数顺序存在差异性。
编译能够通过的编译顺序是
-Wl,–whole-archive xxx -Wl,–no-whole-archive -Wl,–export-dynamic
编译不过的顺序是:
-Wl,–whole-archive -Wl,–no-whole-archive -Wl,–export-dynamic xxx
通过对比可以发现主要差一点在于编译参数 -Wl,–no-whole-archive 的位置。
编译不过的时候,编译参数被pkg-config生成的时候做了优化调整,导致编译失败。
解决方法
有问题的版本 pkgconfig-0.27
可以升级到0.29版本
下载链接: https://pkgconfig.freedesktop.org/releases/