今天使用一臺舊的AIX測試環境(A1)進行代碼編譯,老是執行到莫名其妙的地方,從其餘機器(A2)編譯的程序在本測試機上運行卻沒有問題,相同的代碼通過屢次嘗試,不管如何清理、重編譯,老是相同的問題。測試
終於想到了能夠把A1編譯的程序放到A2上運行試試,果真,A2機器運行的時候提示缺乏了一個動態庫,我納悶,我原本是用的靜態庫呀,怎麼提示缺乏動態庫呢?果真在A1的lib庫裏邊發現了兩個動態庫文件,除了後綴不一樣外,名字與靜態庫同樣,確定是前輩們遺留的開發中垃圾,因而刪除後嘗試,果真沒有沒有問題了。開發
編譯時makefile中都是使用「-l+庫名「的方式引用動態和靜態庫,可是當」庫名.so「和」庫名.a「同時存在-L中時,會優先使用動態庫」庫名.so「。
編譯