gcc 編譯遇到 pcap 庫問題
首先在ubuntu中編譯c檔案遇到的問題是:
xxx.c:2:18: fatal error: pcap.h: No such file or directory
#include <pcap.h>
^
compilation terminated.
可以判斷是pcap.h 相關庫沒有安裝。
解決方法:安裝pcap相關庫。
#apt-get install libpcap-dev
重新編譯遇到新的問題
xxx.c:(.text+0xb0a):對‘pcap_findalldevs’未定義的引用
xxx.c:(.text +0xc41):對‘pcap_open_live’未定義的引用
xxx.c:(.text+0xe11):對‘pcap_loop’未定義的引用
collect2: error: ld returned 1 exit status
問題:編譯時需要連線pcap相關庫
解決辦法:在編譯命令後面新增 -lpcap
至此編譯成功,問題解決!
參考連結:https://www.question-defense.com/2011/03/22/error-pcap-h-no-such-file-or-directory
相關推薦
gcc 編譯遇到 pcap 庫問題
首先在ubuntu中編譯c檔案遇到的問題是: xxx.c:2:18: fatal error: pcap.h: No such file or directory #include <pcap.h> ^ compilation termi
GCC編譯引入第三方庫的方法
第一種方法: 在使用時可以用-L後面加路徑來指明第三方庫的路徑,用-I後面加路徑來指明標頭檔案的路徑; [email protected]:/usr/local/mysql# gcc streamingServerSocket.c -o test
linux-gcc 編譯時頭文件和庫文件搜索路徑
con 行程 efi lib local 先後 objc 路徑 oot 一、頭文件 gcc 在編譯時尋找所需要的頭文件 : ※搜尋會從-I開始 ※然後找gcc的環境變量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
通過編譯函數庫來學習GCC【轉】
說了 代碼段 必須 () com 意義 同進程 變量 主程 轉自:http://blog.csdn.net/u012365926/article/details/51446295 基本概念 什麽是庫 在windows平臺和linux平臺下都大量存在著庫。 本質上
GCC編譯過程與動態連結庫和靜態連結庫(未整理)
來源:https://www.cnblogs.com/qingjiaowoxiaoxioashou/p/6410588.html 根據連結時期的不同,庫又有靜態庫和動態庫之分。靜態庫是在連結階段被連結的,所以生成的可執行檔案就不受庫的影響,即使庫被刪除,程式依然可以成功執行。而動態庫是在程式執行的時
【轉】gcc 編譯使用動態鏈接庫和靜態鏈接庫
避免 因此 -s 階段 cap etc 可執行 選項 而已 1 庫的分類 根據鏈接時期的不同,庫又有靜態庫和動態庫之分。 靜態庫是在鏈接階段被鏈接的(好像是廢話,但事實就是這樣),所以生成的可執行文件就不受庫的影響了,即使庫被刪除了,程序依然可以成功運行。 有別於靜態庫,動
arm-linux-gcc編譯時出現的一些小插曲-----64位系統需要32位的庫
最近由於工作的需要,重新弄起arm-linux-gcc編譯。離上一次弄這些有整整10年了。 我是在一臺64位的機器上實機安裝的 centos7 發行版,系統和交叉編譯器的安裝過程自是沒話說,問題出在使用arm-linux-gcc編譯 arm程式時, $ arm-linu
gcc 編譯工具(下)--- 外部庫、共享庫、靜態庫、動態庫
gcc 編譯工具(下)— 外部庫、共享庫、靜態庫、動態庫 1. 標頭檔案與庫檔案 在使用C語言和其他語言進行程式設計時,需要標頭檔案來提供對常數的定義和對系統及函式呼叫的宣告。 庫檔案是一些預先編譯好的函式集合,那些函式都是按照可重用原則編寫的。他們通
linux下gcc編譯 .c檔案生成動態連結庫 .so檔案,並測試呼叫該連結庫
簡單介紹:linux中so檔案為共享庫,和windows下dll相似;so可以共多個程序呼叫,不同程序呼叫同一個so檔案,所使用so檔案不同;so原檔案不需要main函式;例項,1.通過mysqlTest.c中的函式mysql(),生成一個libmysql.so連結庫#inc
GCC編譯過程與動態鏈接庫和靜態鏈接庫
elf格式 方式 通過 ifd lan 匯編語言 cpp wid 本質 1. 庫的介紹 庫是寫好的現有的,成熟的,可以復用的代碼。現實中每個程序都要依賴很多基礎的底層庫,不可能每個人的代碼都從零開始,因此庫的存在意義非同尋常。 本質上來說庫是一種可執行代碼的二進制形式,
gcc編譯-同時包含靜態庫和共享庫
1. 當在同一個目錄下靜態庫和共享庫同名時,共享庫優先 hello.h標頭檔案 #ifndef HELLO_H #define HELLO_H void print_hello(); #endif hello.c原始檔 #include "hello.h" #include
gcc編譯工具生成動態庫和靜態庫之一----介紹
1.庫的分類 根據連結時期的不同,庫又有靜態庫和動態庫之分。 靜態庫是在連結階段被連結的(好像是廢話,但事實就是這樣),所以生成的可執行檔案就不受庫的影響了,即使庫被刪除了,程式依然可以成功執行。 有別於靜態庫,動態庫的連結是在程式執行的時候被連結的。所以,即使程式編譯完,庫仍須保留在系統上
GCC編譯、連結、執行時庫查詢順序(最真實可信)
參考了不少資料,其中最靠譜是這個:http://www.mingw.org/wiki/librarypathhowto和http://www.kaizou.org/2015/01/linux-libraries/經過線上實際驗證,GCC編譯、連結、執行時庫查詢順序如下,這個順
Linux下gcc編譯生成動態連結庫*.so檔案並呼叫它
動態庫*.so在linux下用c和c++程式設計時經常會碰到,最近在網站找了幾篇文章介紹動態庫的編譯和連結,總算搞懂了這個之前一直不太瞭解得東東,這裡做個筆記,也為其它正為動態庫連結庫而苦惱的兄弟們提供一點幫助。1、動態庫的編譯下面通過一個例子來介紹如何生成一個動態庫。這裡
Linux下GCC 編譯時如何指定連結庫
-l引數和-L引數 -l引數就是用來指定程式要連結的庫,-l引數緊接著就是庫名,那麼庫名跟真正的庫檔名有什麼關係呢?就拿數學庫來說,他的庫名是m,他的庫檔名是libm.so,很容易看出,把庫檔名的頭lib和尾.so去掉就是庫名了。當我們自已要用到一個第三方提供的庫名字libtest.so,那麼我們只要把lib
gcc 編譯動態庫及連結
1.testa.c #include <stdio.h>void Test_a() { printf("This is Test_a!"); } 2. testb.c #include <stdio.h>void Test_b(
GCC 編譯使用動態連結庫和靜態連結庫--及先後順序----及環境變數設定總結
1 庫的分類 根據連結時期的不同,庫又有靜態庫和動態庫之分。 靜態庫是在連結階段被連結的(好像是廢話,但事實就是這樣),所以生成的可執行檔案就不受庫的影響了,即使庫被刪除了,程式依然可以成功執行。 有別於靜態庫,動態庫的連結是在程式執行的時候被連結的。所以,即使
Linux下.h與動態庫.so檔案的路徑新增及gcc編譯的記錄
使用場景 當你在程式中加入一個非gcc預設搜尋路徑上的一個.h標頭檔案時,會報錯“No such file”,當你的程式需要動態連結一個.so庫時,在預設路徑裡找不到該庫,也會報錯。那麼,如何解決這兩種問題呢? gcc編譯使用“-I”選項 當頭檔案非標
GCC 編譯使用動態連結庫和靜態連結庫
1 庫的分類 根據連結時期的不同,庫又有靜態庫和動態庫之分。 靜態庫是在連結階段被連結的(好像是廢話,但事實就是這樣),所以生成的可執行檔案就不受庫的影響了,即使庫被刪除了,程式依然可以成功執行。 有別於靜態庫,動態庫的連結是在程式執行的時候被連結的。所以,即使程式編譯完,
0420 測試記錄 gcc 編譯時 庫檔案 標頭檔案問題及其解決方案
[[email protected] c]# g++ -L/usr/local/lib -I/usr/local/includes -o morphology morphology.cmorphology.c:1:16: 錯誤:cv.h:沒有那個檔案或目錄morph