從github上下載了源代碼來編譯。卻到處踩坑。
首先是makefile,mMakefile裏面記錄的是 你的工程(也就是一堆程序的有序集合)的編譯規則。
一般編譯腳本都寫在autogen.sh這個文件中
我安裝的庫的autogen.sh的內容如下:
mkdir -p m4
autoreconf --install --verbose
./configure
make
make check
make check的作用:
make命令是運行的所在目錄下的Makefile文件, 如果Makefile 裏有check的話, 會執行測試,也就是檢查下編譯出來的東西能不能用。make install的作用:
make的原理是執行一個叫Makefile文件裏的指令,make的基本用處是自動根據makefile裏的指令來編譯源文件。它還可以用來做比如安裝軟件,卸載軟件等事情,但前提是作者在makefile裏寫了。比如makefile裏有這麼些內容:
...
install : < commands >
然後用make install的話,make程序就會按照上面install:後面的指令< commands >執行安裝,uninstall也是一樣的道理,大部分的作者會寫有卸載的部分,這時只要簡單地執行make unistall就可以,如果作者懶沒有寫,那就只有根據make install中的步驟,看它把什麼文件拷到哪去了,然後分別手動刪除。
make clean:
清除編譯結果,回到編譯前的狀態。
庫成功安裝後,執行g++命令鏈接到指定的庫,還是出現找不到so庫文件的錯誤提示。
返回去看安裝信息:
s
發現安裝在usr/local/lib 位置,經查閱,發現是ubuntu庫的搜索路徑不包括usr/local/lib
後來在/etc/profile中加入環境變量
export LD_LIBRARY_PATH=/usr/local/li
保存後 ,執行source,使環境變量生效