zoukankan      html  css  js  c++  java
  • pkg-config命令的Makefile.am

     

    举例:通过Makefile调用pkg-config命令。

    pkg-config - Return metainformation about installed libraries
    

    (为了使用lib库,通过pkg-config生成必要的编译options)

    Makefile中的例:

    CFLAGS = `pkg-config --cflags gtk+-2.0` 
    LDFLAGS = `pkg-config --libs-only-L gtk+-2.0` 
    LIBS = `pkg-config --libs-only-l gtk+-2.0`
    

    其中的 ` 符号,不是单引号。而是和~符号为同一按键的那个符号!!!# ``

    Makefile.am中的例:

    AM_CFLAGS = `pkg-config --cflags gtk+-2.0` 
    AM_LDFLAGS = `pkg-config --libs gtk+-2.0`
    

    已经登录的lib库的列表表示

    $ pkg-config --list-all
    

    这里使用了程序 pkg-config,可以从 www.freedesktop.org 得到。这个程序读取 GTK 附带的 .pc 文件来决定编译 GTK 程序需要的编译选项

    gtk+-2.0.pc文件的位置是

    Cygwin的话      :/lib/pkgconfig/gtk+-2.0.pc
    Linux(ubuntu)的话:/usr/lib/pkgconfig/gtk+-2.0.pc
    

    C是一种编译语言, 需要使用gcc编译器把源代码转换为二进制可执行代码。
    为了让gcc知道GTK+链接库位置以及编译标识,我们使用pkg‐config。

    当我们安装GTK+开发包时, 一个叫"gtk+-2.0.pc"的配置文件也安装了, 它告诉pkg‐config我们系统上安装的GTK+库版本以及包含文件位置等信息。

    lb@ubuntu:~$ pkg-config --modversion gtk+-2.0
    2.18.3
    lb@ubuntu:~$
    

    终端输出将是你安装的GTK+版本号。

    现在来看编译GTK+应用程序时需要的编译器标识:

    lb@ubuntu:~$ pkg-config --cflags gtk+-2.0
    -D_REENTRANT -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/directfb -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include 
    lb@ubuntu:~$ 
    

    输出将是一堆的 ‐I 开关选项指出编译器使用的包含文件。
    这能让gcc知道到哪去找我们应用程序中"#include"所列出的包含文件。
    每当使用了"#include"并引用了非标准C库头文件时, 都需要使用"I/path/to/library"选项传
    给gcc。这些库可以装在不同的地方,这根据分发要求,操作系统或使用者意愿来定。
    而pkg‐config为我们掌控这一切。

    lb@ubuntu:~$ pkg-config --libs gtk+-2.0
    -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lgio-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 
    lb@ubuntu:~$ 
    

    -l 连接库文件。

    补充:

    pkg-config --cflags gmodule-2.0
    -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include 
    
    lb@ubuntu:~$ pkg-config --libs gmodule-2.0
    -Wl,--export-dynamic -lgmodule-2.0 -lglib-2.0
  • 相关阅读:
    ionic + cordova+angularJs 搭建的H5 App完整版总结
    在DevExpress程序中使用GridView直接录入数据的时候,增加列表选择的功能
    【Web动画】SVG 线条动画入门
    闲来无聊,研究一下Web服务器 的源程序
    PHP实现RTX发送消息提醒
    关于AngularJS(1)
    项目总结12:bootstrap-select下拉框模糊搜索
    JAVA读取XML文件并解析获取元素、属性值、子元素信息
    项目总结11:Centos部署JDK+Tomcat+MySQL文档(阿里云-网易云-华为云)
    项目总结10:通过反射解决springboot环境下从redis取缓存进行转换时出现ClassCastException异常问题
  • 原文地址:https://www.cnblogs.com/sddai/p/10364298.html
Copyright © 2011-2022 走看看