1. 背景
最近基于chromium开发QUIC时,需要支持带宽统计的特性。经过调研发现了一个第三方库,即prometheus-cpp。于是便有了在chromium编译QUIC服务时依赖prometheus-cpp的需求。起初,按照prometheus-cpp提供的编译方法,使用cmake编译出了动态库(主要会使用到libprometheus-cpp-core.so和libpromemtheus-cpp-push.so)。但是在进一步chromium编译的时候,出现了很多undefined symbol的错误,让人感到十分困惑。
2. 需要解决的问题
结合以上背景,我们解决的问题是:基于chromium环境下,成功地让我们的应用程序可以直接调用libprometheus-cpp*,以实现数据上报功能。
3. 分析
首先,为了能够在chromium环境中依赖非chromium编译的第三方库,查阅相关文档,知道需要在项目的BUILD.gn文件中添加include_dirs和libs,如:
executable("xxx-server") {
....
include_dirs = ["/usr/local/include"]
libs_dirs = ["/usr/local/lib"]
libs = ["libprometheus-cpp-core", "libprometheus-cpp-push"]
....
}
这样理论上就可以将/usr/local/lib/下面的libprometheus-cpp-core.so和libprometheus-cpp-push.so添加