Linux動態庫連線後依然報錯函式未定義

2021-10-24 18:32:18 字數 771 閱讀 7468

date:2020_10_14

environment:linux

language:c

首先,我有乙個main.c檔案,該檔案呼叫了標頭檔案head.c裡的第三個函式void thridfunc(spectype para)head.c裡的三個函式通過兩個源**檔案定義,並通過如下命令建立動態庫:

g++ fist.c second.c -fpic -shared -o libdynamic.so
這一步並無報錯!
g++

-g -o main.out main.c -ldynamic.so -l.

-wl,

-rpath=.

此步報錯thridfunc未定義

接下來通過如下命令檢查動態庫中函式是否存在:

readelf -s libdynamic.so
確實存在

標頭檔案中宣告thridfunc(spectype para)時,spectype型別所需標頭檔案未包含。

如果單純是**層面的問題,vsode常常是紅色的錯誤資訊。而未定義或未包含錯誤,應該是灰色的。(經驗之談而已,並未進行驗證)

linux生成動態庫 fPIC報錯

linux生成動態庫時遇到了relocation r x86 64 32 against luao nilobject can not be used when a shared object recompile with fpic錯誤。fpic作用於編譯階段,告訴編譯器產生與位置無關 positi...

Linux的動態連線庫

大家對windows作業系統中的dll檔案一定十分熟悉,其實這種軟體元件化的方法在linux中也可以實現。其實外掛程式和 dll 通常是用來無須編寫整個新應用程式而新增功能的極好方法,一般來講,在不更改原有應用程式的情況下,外掛程式為現有應用程式提供新功能。linux環境下甚至做的更好。linux提...

Python檔案執行出錯修改後依然報錯的問題

switches.py是ryu控制器子目錄topology下的乙個檔案。我根據實驗需要對switches.py進行編輯時,有一行 的縮排出錯 少打了乙個tab 而沒有發現。因為之前還修改過ryu的全域性啟動引數 在ryu頂級目錄下的flags.py檔案中新增了 因此儲存檔案後,重新安裝了ryu控制器...