pkg-config 与gcc 配合的使用
我们平常都是这样用pkg-config的
$gcc main.c pkg-config --cflags --libs gtk+-2.0
-o main
上面的编译命令中,pkg-config --cflags --libs gtk+-2.0
的作用就如前面所说的,把gtk的头文件路径和库文件列出来,让编译去获取。–cflags和–libs分别指定头文件和库文件。
pkg-config 是在 PKG_CONFIG_PATH 目录下寻找pc文件来确定各个包的头文件的目录和库的目录
默认在这里面有
/usr/local/lib/pkgconfig
举例opencv.pc
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/includeName: OpenCV
Description: Open Source Computer Vision Library
Version: 3.4.10
Libs: -L${exec_prefix}/lib -lopencv_shape -lopencv_dnn -lopencv_highgui -lopencv_objdetect -lopencv_viz -lopencv_superres -lopencv_videostab -lopencv_video -lopencv_photo -lopencv_ml -lopencv_stitching -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_videoio -lopencv_imgcodecs -lopencv_imgproc -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir_old} -I${includedir_new}
随便写一个opencv 程序如下
#include "highgui.h" int main(int argc, char** argv)
{const char *imgpath = "opencv.jpg";IplImage *img = cvLoadImage(imgpath);//加载图像文件至内存cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE);//创建一个名为Example1的窗口cvShowImage("Example1", img);//显示图像cvWaitKey(0);//等待用户触发按键cvReleaseImage(&img);//释放图片占用的内存cvDestroyWindow("Example1");//销毁窗口return 0;
}
保存然后使用pkg-config 来寻找对的头文件和库,最后使用gcc编译
链接对应的头文件
pkg-config --cflags opencv
这句话对应的就是
pkg-config --cflags opencv
链接对应的库
pkg-config --libs opencv
-L/usr/local/lib -lopencv_shape -lopencv_dnn -lopencv_highgui -lopencv_objdetect -lopencv_viz -lopencv_superres -lopencv_videostab -lopencv_video -lopencv_photo -lopencv_ml -lopencv_stitching -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_videoio -lopencv_imgcodecs -lopencv_imgproc -lopencv_core
完整使用gcc编译代码如下
gcc opcv.cpp `pkg-config --cflags --libs opencv` -o opencvtest
pkg-config 与gcc 配合的使用相关推荐
- linux双机脚本pkg如何生效,linux里命令pkg config工具的使用
一.编译和连接 一般来说,如果库的头文件不在 /usr/include 目录中,那么在编译的时候需要用 -I 参数指定其路径.由于同一个库在不同系统上可能位于不同的目录下,用户安装库的时候也可以将库安 ...
- GCC编译选项--创建与使用库
系统函数库使用 linux系统函数库位于/usr/lib和/lib目录下 #include <math.h> #cc test.c -lm -o test 动态库创建 1).编译时指定-f ...
- gcc编译参数[转]
1.GCC包含的C/C++编译器 gcc.cc.c++.g++ gcc和cc是一样的,c++和g++是一样的,一般c程序就用gcc编译,c++程序就用g++编译 2.gcc的基本用法 gcc test ...
- gcc编译器命令使用详解
1.gcc包含的c/c++编译器 gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什 么意思:))一般c程序就用gcc编译,c++程序就用g++编 ...
- [转]GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名
1.gcc包含的c/c++编译器 gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什 么意思:))一般c程序就用gcc编译,c++程序就用g++编 ...
- Gcc详解以及静态库、动态库生成
[转] Gcc详解以及静态库.动态库生成 http://www.360doc.com/content/10/0619/14/1795182_33985297.shtml 1.gcc包含的c/c++编译 ...
- GCC 命令选项使用详解
GCC 命令行详解[转帖] 1.gcc包含的c/c++编译器 gcc.cc.c++.g++ gcc和cc是一样的,c++和g++是一样的,一般c程序就用gcc编译,c++程序就用g++编译 2.gcc ...
- GCC 命令行具体解释
作者: www.linuxfans.org mozilla 1.gcc包括的c/c++编译器 gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的.(没有看太明确前面这半句是什 ...
- 透过源码领悟GCC到底在干些什么
GCC源码分析(一)--介绍与安装 GCC源码分析(一)--介绍与安装 目录(?)[-] 一GCC的作用和运行机制 二GCC的安装 上半年一直在做有关GCC和LD的项目,到现在还没做完.最近几天编程的 ...
最新文章
- “比特币耶稣”:看好比特币现金,比特币大势已去
- linux里打包和压缩文件,linux ---打包和压缩文件
- 007_html头部元素
- linux命令之查看程序动态库依赖-ldd
- 【REST】REST和JAX-RS相关知识介绍
- Java笔记(基础第二篇)
- C#中常用的几种读取XML文件的方法
- 安卓安卓移动操作系统优缺点
- 小米12 Ultra外观设计曝光:白色陶瓷机身 后置硕大相机模组
- 周报_2013第02周(2013/01/06-2013/01/12)
- No goals have been specified for this build. You must specify a valid lifecycle phase or a goal.....
- (转)AppDomain 和动态加载
- ios开发之--UITextField光标右移
- 抖音热门技术全套 手机修改视频md5软件ios
- 嵌入式论坛展示微控制器、工具、软件、物联网、连接性、安全性
- bzoj2429- 聪明的猴子
- 安装office提示Office 16 Click-to-Run Extensibility Component
- 20161214_namelist.input说明
- github推送Please make sure you have the correct access rights and the repository exists.
- 网页布局中的 px,em,rem,pt