编译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文件删除。

最新文章

  1. .Net Core Linux centos7行—发布程序到生产环境
  2. oracle数据库的安装、配置与无残留卸载
  3. Redis优化总结
  4. sourceforge.net 打不开怎么办?(转)
  5. 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
  6. Codeforces Round #197 (Div. 2) : D
  7. Shell数组:shell数组的定义、数组长度
  8. 我的Fedora环境
  9. voip技术研究
  10. 201621123050 《Java程序设计》第1周学习总结
  11. ROC曲线的AUC(以及其他评价指标的简介)知识整理
  12. Stackoverflow 最受关注的 10 个 Java 问题
  13. notes for lxf(四)
  14. c#—get,set访问器的作用
  15. Mysql数据库基础学习笔记
  16. java爬取免费HTTP代理 code-for-fun
  17. SVG路径PATH
  18. [leetcode]100. Same Tree相同的树
  19. CentOS挂载光盘
  20. Excel中快捷键Ctrl+End覆盖过多

热门文章

  1. Laravel 视图中的url
  2. Mysql Binlog日志文件介绍
  3. (6)DataTable 转换成 Json
  4. HTTP请求的缓存(Cache)机制
  5. luogu P1149 火柴棒等式
  6. CS Academy #32 G
  7. 心脏滴血漏洞复现(CVE-2014-0160)
  8. 5.Longest Palindrome substring
  9. 利用systemtap定位ifconfig dropped数据包的原因
  10. java多线程异步执行