shared objects (.so files):
- 可以動態鏈接的庫,在Windows上是Dynamic Link Library(DLL),在UNIX或Linux上是Shared Library
動態庫的搜索路徑搜索的先后順序是:
1.編譯目標代碼時指定的動態庫搜索路徑;
2.環境變量LD_LIBRARY_PATH指定的動態庫搜索路徑;
3.配置文件/etc/ld.so.conf中指定的動態庫搜索路徑;
4.默認的動態庫搜索路徑/lib /usr/lib
動態庫與靜態庫的最大區別:
靜態庫是靜態鏈接,也就是在生產可執行文件的時候就把靜態庫中的實現嵌入到程序中了,一旦編譯成功了,靜態庫也就有存在的價值了,即便靜態庫不存在了,可執行程序也是可以跑起來的,靜態鏈接的最大缺點是生成的可執行文件較大,需要更多的系統資源,在加載到存儲器時也會消耗更多的時間;但是動態庫就不一樣了,它是遵循動態鏈接,也是就說編譯的時候需要指定路徑去找該so文件鏈接編譯,運行的時候也需要指定相應的路徑去找. 如果在運行的時候,可執行程序會先去默認的系統lib目錄下,尋找該so,如果找不到了,就該報錯了:error while loading shared libraries
解決辦法:
通過find / -iname lib*.so找到需要的lib*.so,並放到指定的路徑!