zoukankan      html  css  js  c++  java
  • 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文件删除。

  • 相关阅读:
    Bootstrap之Carousel问题
    IMG图片和文字同行显示
    divcss5布局
    使用PHP QR Code生成二维码
    mysql grant用户权限设置
    Linux下的压缩解压缩命令详解
    linux网站目录及Apache权限的设置
    lamp环境编译(apache2.4.7 php5.4.25 mysql 5.5.23)
    mysql开启远程访问
    lamp环境编译(实际通过)
  • 原文地址:https://www.cnblogs.com/bettersky/p/6734673.html
Copyright © 2011-2022 走看看