呼叫libpci庫出現的問題和解決方法

2023-02-07 01:01:07 字數 1458 閱讀 9257

呼叫libpci庫出現的問題和解決方法

本方案以pciutils-3.5.1為例.

2. 然後

[[email protected] terry]# xz –d pciutils-3.5.1.tar.xz

[[email protected] terry]tar xvf pciutils-3.5.1.tar

[[email protected] terry]# cd pciutils-3.5.1

[[email protected] pciutils-3.5.1]# make

就會發現在

[[email protected] pciutils-3.5.1]# ls lib/libpci.a

lib/libpci.a

**注意***

如果你需要動態的連線庫,你只需要將makefile改為

shared=yes

3. 寫好自己的**, 比如我寫的如下:

#include

"pci.h"

bool pcievdp::getpciconfig(pci_config *pci_cfg, pci_location *loc, int &pcicount)

memcpy((unsigned

char *)&pci_cfg[pcicount], data, 256);

loc[pcicount].bus_num = dev->bus;

loc[pcicount].dev_num = dev->dev;

loc[pcicount].func_num = dev->func;

pcicount++;

}pci_cleanup(pacc);        /* close everything */

return

true;

}需要將pciutils-3.5.1/lib下的pci.h, header.h, types.h以及libpci.a 拷貝到你的程式檔案相同的目錄.

4.執行make去編譯,發現出現以下問題.

折騰了下,發現是因為libpci.a這個庫是用c語言寫的,而我的程式是用c++寫的, 於是在pci.h的頭和尾加上

#ifdef __cplusplus

extern

"c"

#endif

問題解決

.5. 可是新的問題有出現了

查了下發現是我的makefile中沒有載入libz,於是修改makefile如下

lib+=-ldl -lz -lpthread ./libpci.a

發現問題解決,編譯順利通過.

呼叫nvml出現的問題

慢慢我也意識到記錄的重要性,以前知道的東西會很容易忘記,如果後來又要用到又需要花時間去找。這樣沒有積累的感覺,一切都是從零開始,很不好。nvml是 英偉達公司提供的動態庫,它可以監控顯示卡的溫度使用率等引數。但這個動態庫有些函式 比如 nvmldevicegetutilizationrates,得到...

c 呼叫objc出現的問題

我在c 類中生命一個一個objc的變數,引入了標頭檔案,卻說找不到type,unknown type name registviewcontroller 最後找到原因,是因為我在標頭檔案宣告的時候,不小心吧include生命再一個巨集if段裡面,如下 移出去,編譯正確。if defined win3...

C 呼叫C連結庫會出現的問題

非本人原創,在此註明,以表對原作者的敬佩 以下是假設舊的c程式庫 c的標頭檔案 c.h ifndef c h define c h extern int add int x,int y endif c的原始檔 c.c int add int x,int y c 的呼叫 cpp.cpp include...