• pkg-config相关


    编译fuse的命令 gcc myfuse.c -o myfuse `pkg-config fuse --cflags --libs`

    中的 pkg-config fuse --cflags --libs 是什么东西呢?

    原来是提供fuse库及图文件的路肩。

    直接在命令行打 pkg-config fuse --cflags --libs 结果是:

    -D_FILE_OFFSET_BITS=64 -I/usr/include/fuse -pthread -lfuse

    其中 -D_FILE_OFFSET_BITS=64 -I/usr/include/fuse 是 --cflags的结果,,-I是头文件的搜索路径.  -pthread -lfuse是--libs的结果,-lfuse是使用fuse库。

    对于每一个安装的包,都会生成一个.pc文件, pkg-config fuse --cflags --libs 就是读取 fuse.pc文件,那么这个文件在哪呢?

    一般来说, pkg-config 默认会搜索一些路径下的.pc文件,也可以用 PKG_CONFIG_PATH 环境变量额外添加路径。

    下面我们就来找fuse.pc


    首先查找所有的pkgconfig目录,sudo find /usr  -name "*pkgconfig*" -type d -prune -print,结果是:

    /usr/local/lib/pkgconfig
    /usr/local/lib/x86_64-linux-gnu/pkgconfig
    /usr/lib/pkgconfig
    /usr/lib/x86_64-linux-gnu/pkgconfig
    /usr/lib/openmpi/lib/pkgconfig
    /usr/share/pkgconfig

    我们一个个列出这些路径下的文件,最终在 /usr/lib/x86_64-linux-gnu/pkgconfig 下面找到了 fuse.pc

        后来又发现编译fuse-2.9.2后是在/usr/local/lib/pkgconfig下面。

    一般来说,通过apt-get安装的软件包,可以通过dpkg -l列出来,使用grep列出特定包。但是通过编译源文件make install的包就不能通过此方法列出来,因为没有经过系统包管理软件的追踪。

    但是,一般可以通过pkg-config --list-all 列出来。

    比如使用上面方法安装fuse-2.9.2后,可以通过pkg-config --list-all 列出来,如果再make uninstall卸载掉后,pkg-config --list-all 就不再显示。

    原理应该是安装操作安装了.pc文件。卸载操作将 .pc文件删除。

  • 相关阅读:
    追踪神秘的成都Uber:月入2万元是现实还是传说
    打造自己博客(wordpress)的wap手机版本
    今天刚申请成为Uber司机 已经接了5单了....大家有什么想问的吗?
    UBER司机奖励政策
    原生应用native、Web应用、混合应用hybrid:3者的优缺点解析
    “基数排序”之数组中缺失的数字
    html5 新增语义标签
    如何判断Javascript对象是否存在
    HTML 5 <details> 标签
    html5 notifications通知
  • 原文地址:https://www.cnblogs.com/bettersky/p/6734673.html
Copyright © 2020-2023  润新知