呼叫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...