新闻详情

新闻详情

首页 / 资讯中心 / 详情

pkg-config介绍

发布时间:2026/9/5 5:45:08来源:尧图网络
pkg-config介绍
接着前面的博客此篇不聊ROS2聊聊pkg-config的使用一. 概念了解1. pkg-config 只是查询工具只负责读取.pc文件输出编译参数不具备下载、编译、安装软件的能力。.pc是 pkg-config 的配置文件作用 编译时自动提供库的-I头文件路径、-L库目录、-l链接名、编译宏、版本、依赖等参数。 只要项目 / 库支持pkg-config, 就会提供对应的.pc文件。比如# 一次性拼接参数编译 g main.cpp -o main pkg-config --cflags --libs opencv4很多童鞋接触它是因为配置Opencv的原因但得知道不仅仅opencv带.pc文件用于被pkg-config管理。诸如fftw3.pceigen3.pc文件。拿博主Jetson Orin Nano板子上来看2. 安装pkg-config可使用如下命令sudo apt update sudo apt install pkg-config3. 生成.pc文件的方式1apt/dnf 系统包安装libxxx-dev- 绝大多数会自动带.pc无需手动开启2源码编译的时候开启pkg-config功能Autotools./configure make老牌库默认自动生成.pc无开关代表库libpng、zlib、fftw、glib、libjpeg、v4l-utilsMeson构建现代图形库gtk4、gstreamer、libcamera默认开启自动生成 pcCMake构建OpenCV、Ceres、g2o、PCL、Eigen- 分库开关名称不统一必须手动加参数开启CMake 库没有统一标准开关每个库自定义 option不写对应开关就不会生成.pc。我们拿opencv来举例。如何使用编译工具编译Opencv的方法见如下博客【如下当时是做交叉编译】可看到图形化编译工具可以直接去勾选很多设置选项从而对是否生成.pc文件进行管控。Ubuntu下的基本知识点二_libxcb-CSDN博客Ubuntu交叉编译含有Opencv功能的程序并在树莓派上执行_树莓派交叉编译opencv-CSDN博客二. 默认库或默认搜索文件路径1. 编译和运行程序时系统预制了一套默认公共路径系统自带软件、apt 安装的库放在里面开箱即用。省的在~/.bashrc中手动去添加搜索路径。但碰到源码编译安装软件或者想多版本共存时不想去破坏其它已有的目录但又想容易切换版本那么可以去手动添加自定义路径自己去配置。2. 如下代码可查看默认的搜索路径不需要在~/.bashrc中手动添加ld --verbose | grep SEARCH_DIR | tr -s ; \n3. 拿opencv举例我们先看下系统上生效的opencv的版本pkg-config --modversion opencv4如下命令可查看完整编译参数包含路径pkg-config --cflags --libs opencv44. 含有多个Opencv版本时就会有多个对应的opencv.pc配置文件如下命令可查找文件位置sudo find /usr -name opencv4.pc 2/dev/null5. 我们去打开这个两个文件分别看下opencv的版本6. 由于上面第3步打印了当前opencv的版本输出是4.10.0版本那么便可知用的哪个位置的opencv版本了。这里我们创建test_opencv.cpp简单测试下代码如下#include opencv2/core/core.hpp #include opencv2/opencv.hpp #include iostream using namespace cv; using namespace std; int main() { Mat img imread(/home/jetson/myfiles/lena_color_256.tif); std::cout read ok std::endl; imshow(image, img); waitKey(0); return 0; }运行效果如下这里由于Ubuntu的默认搜索位置下存在.pc文件所以并不需在~/.bashrc文件中手动添加路径省去了一些操作。三.自己手动添加路径如果默认搜索路径下没有.pc文件或者想指定opencv的版本切换版本比如切成上面/usr/lib/aarch64-linux-gnu下的那么可以打开~/.bashrc在里面增加如下语句结束后别忘了加source ~/.bashrc语句更新下环境再次执行如下语句使用如下命令行编译都可以成功运行g test_opencv.cpp -o test_opencv.out $(pkg-config --cflags --libs opencv4) -lpthread -lrt -ldl aarch64-linux-gnu-g test_opencv.cpp -o test_opencv.out $(pkg-config --cflags --libs opencv4) -lpthread -lrt -ldl所以很多库路径虽然在~/.bashrc中没有手动看到但不表示其没有安装只是它放在了很多默认搜索路径下。apt安装时默认会装到默认搜索路径下么所以不用手动在~/.bashrc中配置。如上例子也说明了通过opencv.pc配置的简便性。如上只是说明默认搜索路径以及手动添加路径的好处同时能看到这也是切换版本的方法之一。附如下命令可查看Jetson Orin Nano板子的架构本机编译程序直接用系统自带gtarget:aarch64-linux-gnu
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

STM32F407VET6深度解析:性能、选型与实战项目指南 2026/9/5 5:42:51

STM32F407VET6深度解析:性能、选型与实战项目指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Jetson Orin Nano 2边缘AI部署实战:从TensorRT优化到实体机器人控制 2026/9/5 5:42:51

Jetson Orin Nano 2边缘AI部署实战:从TensorRT优化到实体机器人控制

1. 项目定位与核心需求拆解1.1 为什么是Orin Nano 2:入门级边缘AI的市场空白过去两年里,我经手过不少边缘AI项目,从工业质检到零售分析,再到机器人本体上的实时推理,踩过的坑比写过的代码还多。早期大家一窝蜂用树莓派…

阅读更多 →
三个月搞定酒店英语:用场景代入法记词汇,边吃边学饮食单词 2026/9/5 5:42:51

三个月搞定酒店英语:用场景代入法记词汇,边吃边学饮食单词

还记得我第一次出国旅行,在酒店前台办入住时,对方问“Would you like a king-size bed or twin beds?”我愣了半天,最后指着图片比划。那场面,尴尬得想钻地缝。后来我发现,酒店英语词汇其实不难,关键是别死…

阅读更多 →
PDF编辑处理全攻略:从开源工具到商业替代方案 2026/9/5 5:42:51

PDF编辑处理全攻略:从开源工具到商业替代方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
从Isaac Gym到RK3566:四足机器人强化学习策略部署全记录 2026/9/5 5:42:51

从Isaac Gym到RK3566:四足机器人强化学习策略部署全记录

前阵子我把一只25厘米的四足机器人Microduck,从英伟达GPU上的强化学习训练环境,一路迁移到了RK3566开发板实机运行。整个过程比预想中曲折得多:训练阶段用Isaac Gym跑并行仿真,算法一周就收敛出了能小跑的步态;结果到了…

阅读更多 →
从编码器到译码器:数字电路信息压缩与工程实践全解析 2026/9/5 5:39:50

从编码器到译码器:数字电路信息压缩与工程实践全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞