天天看點

全網首發:由兩個庫同名函數,看LINUX動态庫加載及調用

最近的字型問題,有點怪:

系統庫叫freetype,吾庫叫tsfreetype。

執行程式先freetype,随後在使用時加載tsfreetype。功能出錯。

使執行程式強制依賴tsfreetype,功能正常。

 為什麼出錯?因為兩個庫有同名函數。你在調用的時候,系統按照先入為主的原則搜尋。這聽起來是正常的。 碰到這種情況,通過函數改名即可解決。

 我們來看另外一個例子:

freetype庫,B函數,調用C。

tsfreetype庫,D函數,調用C。

 現在問,D函數調用C,C是哪個?測試後,結論是不一定:

在KYLIN上,優先在本庫中搜尋。

在UOS上,原則依然是先加載的庫優先。這就悲劇了,因為這個時候已經亂七八糟,結果不可預料。

 這個問題怎麼解決呢?改變加載庫順序。強制依賴,指定搜尋路徑。參考其他博文。

繼續閱讀