步驟一:
在被依賴的模組b中匯出要用的符號,如:
intcat9555_state_get_inp(void)
export_symbol(cat9555_state_get_inp);
步驟二:
編譯模組b,當前目錄下生成module.symvers檔案,將其複製到模組a的目錄下。
開啟module.symvers可以看到他的內容如下:
0x3c1007e5cat9555_add_opt_addr/home/project/meterread/gpio/gpioexport_symbol
0x20473c2bcat9555_state_get_inp/home/project/meterread/gpio/gpioexport_symbol
0x3cc81287cat9555_del_opt_addr/home/project/meterread/gpio/gpioexport_symbol
0x68be5229cat9555_release_addr/home/project/meterread/gpio/gpioexport_symbol
0x743cae4dcat9555_state_as_gpo/home/project/meterread/gpio/gpioexport_symbol
0x9c89640ecat9555_state_as_gpi/home/project/meterread/gpio/gpioexport_symbol
0x977f0740cat9555_open_addr/home/project/meterread/gpio/gpioexport_symbol
0xf9713bbbcat9555_state_get_outp/home/project/meterread/gpio/gpioexport_symbol
0x28d7d46fcat9555_state_set_outp/home/project/meterread/gpio/gpioexport_symbol
原來這是記錄匯出符號的檔案。
步驟三:
在模組a的檔案中引用匯出的符號。
externcat9555_state_get_inp(void); //宣告引用的符號是外部變數。
int f(){
cat9555_state_get_inp(); //在這裡引用匯出的符號
編譯a模組。
我如果沒有步驟二的話,插入a模組時會出現以下錯誤(找不到符號 ):
gprsiodrv: no symbol version for cat9555_state_get_inp
gprsiodrv: unknown symbol cat9555_state_get_inp
gprsiodrv: no symbol version for cat9555_state_as_gpi
gprsiodrv: unknown symbol cat9555_state_as_gpi
insmod: cannot insert 'gprsiodrv.ko': unknown symbol in module
但是有人不用步驟二也可以,猜測與編譯器有關。
linux模組中使用其它模組匯出的符號
步驟一 在被依賴的模組b中匯出要用的符號,如 int cat9555 state get inp void export symbol cat9555 state get inp 步驟二 編譯模組b,當前目錄下生成module.symvers檔案,將其複製到模組a的目錄下。開啟module.symv...
nginx中使用perl模組
自 如果對於乙個絕大部分內容是靜態的 只有極少數的地方需要動態顯示,碰巧你又了解一點perl知識,那麼nginx perl的結合就能很好解決問題。要想nginx支援perl指令碼,在編譯nginx時候需要如下引數 configure with http perl module如果make時候出現如下...
python載入其它路徑模組
新建乙個mylib,py和loadlib.py。mylib.py的內容 class hello def sayhello self print hello python loadlib.py的內容 import mylib a mylib.hello a.sayhello 執行會自動呼叫mylib,...