从源代码构建 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/libs
,pkgconfig
文件夹将被放置在 ~/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 命名空间?