从源代码构建 libevent 时如何生成 PKG CONFIG 文件?

Posted

技术标签:

【中文标题】从源代码构建 libevent 时如何生成 PKG CONFIG 文件?【英文标题】:How to generate a PKG CONFIG file when building libevent from source? 【发布时间】:2021-11-24 05:05:27 【问题描述】:

我在 Linux 上使用以下命令集从源代码构建 libevent。

export LDFLAGS="-march=x86-64 -L/home/me/locals/lib64/zlib-1.2.11-gcc-9.3.0/lib"
export CPPFLAGS="-march=x86-64 -I/home/me/locals/lib64/zlib-1.2.11-gcc-9.3.0/include"

../configure --prefix=/home/me/locals/lib64/libevent-2.1.12-gcc-9.3.0

# Finally
make
make install

这似乎奏效了。但我没有看到任何与生成包 PKG_CONFIG 文件 (*.pc) 相关的内容?我该怎么做?

我还有以下活动:

export PKG_CONFIG_PATH=$HOME/locals/lib/pkgconfig

【问题讨论】:

pc文件不是4行文字吗? 它们是多个文件,我认为其目的是不手写任何东西 :) 我在以下位置找到它们:/home/me/locals/lib64/libevent-2.1.12-gcc-9.3.0/lib/pkgconfig。所以我只是将它们复制到我的全球PKG_CONFIG_PATH 位置。 你能做到../configure --prefix=/home/me/locals 吗?这样你就不必复制了。 哦,我明白你的意思了。可能会工作。如果我有多个 libevent 库会发生什么,我需要在其中有不同的版本标签,我不确定 pkg-config 是否支持。 【参考方案1】:

答案实际上来自@Philippe。

我没有意识到lib的安装目录也是放置pkgconfig文件夹的位置,包含*.pc文件。

因此,如果将库安装到一个大型 repo 位置,例如 ~/locals/libspkgconfig 文件夹将被放置在 ~/locals/libs/pkgconfig 中,并且所有 *.pc 文件都将存储在那里。这是方法之一。如果选择了这种方法,PKG_CONFIG_PATH 将如下所示:

PKG_CONFIG_PATH=~/locals/libs/pkgconfig

还有另一种方法,您可以在它们的版本标记位置构建您的库。在这种情况下,需要以更精细的方式构造和处理PKG_CONFIG_PATH 环境变量。例如,变量可能如下所示:

PKG_CONFIG_PATH=/home/me/locals/lib64/libevent-2.1.12/lib/pkgconfig:/home/me/locals/lib64/ncurses-6.2/lib/pkgconfig

这是我在 libevent 的 github 问题页面上得到的详细答案。

Do I have the option of generating package config (*.pc) files when building from source?

【讨论】:

以上是关于从源代码构建 libevent 时如何生成 PKG CONFIG 文件?的主要内容,如果未能解决你的问题,请参考以下文章

CFBundleIdentifier在上传使用Electron开发并使用电子构建器构建的macOS应用程序时发生冲突

LFS 系列从零开始 DIY Linux 系统:构建 LFS 系统 - Pkg-config-0.28

如何使用 Visual Studio 2008 构建 libevent 2.0.10 版

ASP.NET 网站项目从开始(构建)到结束(运行时)如何实现自动生成的 ASP 命名空间?

从源代码构建 TensorFlow 时,生成 `gen_io_ops.py` 文件的 bazel 规则在哪里?

构建 hiphop 时自定义 libevent 包的问题