pkg-config的作用

有些时候你的工程会用到第三方库,比如你会用到一个叫libxxx库,,编译和安装后,你通常会在

/usr/local/lib

/usr/local/include/

目录下发现有xxx/目录,但是很多时候你在代码中引用libxxx库的头文件时,声明如下:

#include <xxx.h>

你的代码写好后,你编译时会出现:

fatal error: xxx.h: 没有那个文件或目录

亦或者是:

error: 对‘xxx_read‘未定义的引用

其中,xxx_read为libxxx库中的某一个函数。

这时候的解决方法可能是在编译器后面加上-I(注:大写的i)和-L,但是如果该库提供了一个libxxx.pc配置文件时,并且在

/usr/local/pkgconf/

目录下安装了这个libxxx.pc配置文件,这时你只需要使用如下命令:

cc file.c -o file `pkg-config --cflag --libs libxxx`

上面是一个抽象的命令,注意灵活使用。pkg-config就会在

/usr/local/pkgconf/

目录下面找到到libxxx.pc,文件,该文件内容类似:

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: xxx
Description: xxx library
Version: 1.0.0
Libs: -L${libdir} -lxxx
Cflags: -I${includedir}/xxx

可以参考一下博文:

pkg-config工具的使用

author: fulinux

E-mail: [email protected]

blog: http://blog.csdn.net/fulinus

code: https://git.oschina.net/fulinux

时间: 2024-10-07 16:01:40

pkg-config的作用的相关文章

移除apsx视图引擎,及View目录下的web.config的作用

<> 使用Rezor视图引擎的时候移除apsx视图引擎 Global.asax文件 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Mvc; using System.Web.Routing; namespace MvcApp { // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明.

移除apsx视图引擎,及View文件夹下的web.config的作用

<> 使用Rezor视图引擎的时候移除apsx视图引擎 Global.asax文件 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Mvc; using System.Web.Routing; namespace MvcApp { // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,

MVC 项目中为什么会有两个web.config

我们对MVC 并不陌生, 在创建MVC项目时,总会发现,在工程目录 中有两个 web.config 文件,一个是在工程的根目录下,一是在 views 下,两个web.config 中的内容也不尽相同,那么为什么会有两个 web.config 文件,这就是这篇随笔将要说明的. 根目录下的 web.config 文件 根目录下的web.config 文件是对根目录下的所有文件起作用,在打开根目录下的 web.config 文件时,你会发现web.config 为所有的路径或动作注册了 HttpNot

为每个应用程序池单独设置aspnet.config配置文件

ASP.NET2.0之后的版本就在各Framework的根目录下提供了一个aspnet.config文件,这个文件用来配置全局的一些信息,但是一直以来我们都没有怎么用过. ASP.NET4.0之后,这个配置文件在并发和线程方面得到了充分的支持.比如,可以设置maxConcurrentRequestsPerCPU, maxConcurrentThreadsPerCPU和requestQueueLimit等参数,用来更加灵活的设置asp.net runtime的配置. C:\Windows\Micr

asp.net项目中通过Web.config配置文件及文件夹的访问权限!

描述:在开发中我们通常会碰到这样的问题,例如:在项目的根目录下面有一个文件或者文件夹需要用户登陆后才能访问.如果用户在没有登录的情况下访问该文件或者该文件夹下面的文件时,直接拦截重定向到对应的登陆页面. 例一: 我想让用户在访问我的程序的Admin文件夹下的页面时需要登录,而在访问其他页面时则不需要,也就是说Admin文件夹下的文件拒绝匿名访问. 下面是配置根目录下的web.config文件中关于授权验证的配置. [xhtml] view plaincopy <system.web> <

GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名

为什么会出现undefined reference to 'xxxxx'错误?首先这是链接错误,不是编译错误,也就是说如果只有这个错误,说明你的程序源码本身没有问题,是你用编译器编译时参数用得不对,没有指定链接程序要用到得库,比如你的程序里用到了一些数学函数,那么你就要在编译参数里指定程序要链接数学库,方法是在编译命令行里加入-lm. -l参数和-L参数-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是l

《软件调试的艺术》学习笔记——GDB使用技巧摘要

<软件调试的艺术>学习笔记——GDB使用技巧摘要 <软件调试的艺术>,因为名是The Art of Debugging with GDB, DDD, and Eclipse. 作者是美国的Norman Matloff和Peter Jay Salzman,中文版由张云翻译.是人邮出版社图灵程序设计丛书初版.这里称为"艺术",个人觉得有点过了,但是其中关于gdb以及在gdb基础之上集成的DDD和Eclipse调试技巧的整理确实是做的很好,对于Linux/开源社区下的

Docker源码分析(八):Docker Container网络(下)

1.Docker Client配置容器网络模式 Docker目前支持4种网络模式,分别是bridge.host.container.none,Docker开发者可以根据自己的需求来确定最适合自己应用场景的网络模式. 从Docker Container网络创建流程图中可以看到,创建流程第一个涉及的Docker模块即为Docker Client.当然,这也十分好理解,毕竟Docker Container网络环境的创建需要由用户发起,用户根据自身对容器的需求,选择网络模式,并将其通过Docker Cl

移植tslib和Qt5.6到三星s5pv210开发板

tslib1.4移植 下载tslib1.4后 1.cp tslib-1.4.tar.bz2 /home/gec 2.tar jxvf tslib-1.4.tar.bz2 3.sudo -s 4.cd tslib-1.4/ 5../configure --host=arm-linux --prefix=/usr/local/arm ac_cv_func_malloc_0_nonnull=yes 6.make 7.make install 修改tslib安装目录下的/etc/ts.conf文件去掉#

ASP.NET MVC概述及第一个MVC程序

一.ASP.NET 概述        1. .NET Framework 与 ASP.NET                .NET Framework包含两个重要组件:.NET Framework类库和公共语言进行时.编写ASP.NET                    页面需要用到.NET Framework的框架类库和公共语言进行时        2. ASP.NET MVC简介            ASP.NET MVC是ASP.NET技术的一个子集,它是ASP.NET 技术和M