linux / pkg-config 原理及用法
一、pkgconfig 有什么用
大家應該都知道用第三方庫,就少不了要使用到第三方的頭文件和庫文件。我們在編譯、鏈接的時候,必須要指定這些頭文件和庫文件的位置。
對于一個比較大第三方庫,其頭文件和庫文件的數量是比較多的。如果我們一個個手動地寫,那將是相當麻煩的。所以,pkg-config 就應運而生了。pkg-config 能夠把這些頭文件和庫文件的位置指出來,給編譯器使用。如果你的系統裝有 uuid,可以嘗試一下下面的命令
pkg-config --cflags uuid
結果
-I/usr/include/uuid
可以看到其輸出是 uuid 的頭文件的路徑。
我們平常都是這樣用 pkg-config 的。
gcc main.c `pkg-config --cflags --libs uuid` -o main
上面的編譯命令中,`pkg-config --cflags --libs uuid` 的作用就如前面所說的,把 uuid 的頭文件路徑和庫文件列出來,讓編譯去獲取。--cflags 和 --libs 分別指定頭文件和庫文件。
二、配置環境變量
看到這里,大家可能想試一下將 pkg-config 用于自己的庫。下面就說一下,怎么寫。
首先要明確一點,因為 pkg-config 也只是一個命令,所以不是你安裝了一個第三方的庫,pkg-config 就能知道第三方庫的頭文件和庫文件所在的位置。pkg-config 命令是通過查詢 XXX.pc 文件而知道這些的。我們所需要做的是,寫一個屬于自己的庫的 .pc 文件。
但 pkg-config 又是如何找到所需的 .pc 文件呢?這就需要用到一個環境變量 PKG_CONFIG_PATH 了。這環境變量寫明 .pc 文件的路徑,pkg-config 命令會讀取這個環境變量的內容,這樣就知道 pc 文件了。
對于 Ubuntu 系統,可以用 root 權限打開 /etc/bash.bashrc 文件。在最后輸入下面的內容。
? ? ? ??
這樣,pkg-config 就會去 /usr/local/lib/pkgconfig 目錄下,尋找 .pc 文件了。如果不是 Ubuntu 系統,那就沒有 /etc/bash.bashrc 文件,可以參考我的一篇博文,來找到一個合適的文件,修改這個環境變量。輸入bash命令使得配置生效。
三、pc 文件書寫規范
好了,現在我們開始寫自己的 .pc 文件。只需寫 5 個內容即可:Name、Description、Version、Cflags、Libs。
? ? ? ??比如簡單的:
Name: opencv Description:OpenCV pc file Version: 2.4 Cflags:-I/usr/local/include Libs:-L/usr/local/lib –lxxx –lxxx其中 Name 對應的內容要和這個 pc 文件的文件名一致。當然為了書寫方便還會加入一些變量,比如前綴變量 prefix 。下面有一個更完整的 pc 文件的內容? ? ? ?
其中,Cflags 和 Libs 的寫法,是使用了-I -L -l 這些 gcc 的編譯選項。
轉載:pkg-config原理及用法 - stardsd - 博客園
(SAW:Game Over!)
?
?
總結
以上是生活随笔為你收集整理的linux / pkg-config 原理及用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux ar 命令详解
- 下一篇: linux 其他常用命令