移植zlib imx6ull 及使用

把zlib的源代碼解壓到主機。

./configure

make  

(我並不想安裝到主機裏,所以我沒有運行make install,  我想直接使用zlib的源碼在應用程序裏。)

會在目錄下生成庫文件。如下圖:

重點看libz.a  libz.so libz.so.1 libz.so.1.2.11其實有2個文件都是鏈接文件,

libz.a 靜態鏈接庫

  libz.so 動態鏈接庫

把編譯好的庫文件libz.a  libz.so  拷貝到./lib下, 編譯的過程中使用 -L  ./lib  -lz  就可以了,

-lz 的意思就是使用- libz.so  或者libz.a 庫, 反正我目錄下都有,管它使用哪個呢。(-l(ib)z.a  真令人費解,想了好久才悟到!)

順利完成鏈接過程,生成可執行文件。

 

但在使用過程中,當調用 ret = compress(dat_dst, &len_dst, dat_src, len_src);

一般出現-5錯誤,經查是

#define Z_BUF_ERROR    (-5)

經過百度確認是第二個參數的問題。第二個參數&len_dst雖然是個地址,理論上保存的壓縮後的數據長度, 但是也需要給這個變量賦初值的,這個初值就是dat_dst緩衝區的大小,如果不賦值的話,len_dst=0, 就會報 Z_BUF_ERROR的錯誤,

賦值之後,完美解決。

這個過程學會了,靜態庫,動態庫的使用,由於對linux編程不熟悉,走了很多彎路,記錄一下自己解決的過程。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章