使用ipp靜態庫,ipp-samples在linux下的make過程

折騰了兩天終於搞定,現在把折騰的過程記錄一下。

1、先安裝ipp8,運行install.sh進行安裝,安裝過程選擇評估版,因爲我們也只是需要它的庫,使用並不影響。

2、安裝cpp_studio_xe_2013_sp1_update2,和1一樣,運行install.sh,比較簡單。

----我現在懷疑第1步可以省略,因爲intel的cpp studio xe裏面實際上包含了ipp的頭文件和庫,當然我沒有進行驗證。

3、安裝編譯ipp-sample,我下載的是這個包:l_ipp-samples_p_7.1.1.013.tgz,解包,然後進入到這個目錄:

cd ipp-samples.7.1.1.013/builder

這個安裝會遇到一些問題,步驟如下:

1)、運行環境變量設置,執行下面兩條命令:

source /opt/intel/ipp/bin/ippvars.sh intel64

source /opt/intel/bin/compilervars.sh intel64

2)、運行:

perl build.pl --cmake=speech-codecs,intel64,make,s,mt,release --comp=native --build

這個命令會調用cmake生成makefile文件並進行編譯構建(我的應用只需要speech-codecs相關的語音codec庫),但跑不下去,會報錯:

IPPROOT not found

但用echo $IPPROOT查環境變量並檢查實際的目錄是正確的,後來分析FindIPP.cmake文件發現問題,原來這個ipp-sample7對應的ipp版本比較老,假定使用的ipp庫還有_l之類的後綴,比如libip pcore_l.a,但cpp_studio_xe_2013_sp1_update2這個版本的ipp庫已經沒有這些後綴了。

打開FindIPP.cmake修改:

將第30行和第35行的語句:

set( LIBS_IPP_SUF _l )或set( LIBS_IPP_SUF _s)

改爲:

set( LIBS_IPP_SUF "" )

然後就可以順利build了。

4、寫個小程序測試一下,比如寫一段代碼測試下g729的codec,代碼就不貼了,重點不在這裏,我自己手寫的makefile,會報告一堆未定義的函數引用,經過一番分析,必須注意makefile裏面的靜態庫加載順序,顛倒了就不行。

下面貼出我正確的順序:

-Bstatic -L /root/ipp-samples.7.1.1.013/__cmake/speech-codecs.intel64.make.s.mt.release/__lib/release \
-lspeech_g729i -lspeech_g729fp -lspeech_alc -lspeech_amrwbe -lspeech_ec -lspeech_g722.1 \
-lspeech_g723.1 -lspeech_g728 -lspeech_gsmamr -lspeech_nr -lspeech_vad\
-lspeech_amrwb -lspeech_common -lspeech_g711 -lspeech_g722 -lspeech_g726 -lspeech_g729.1 -lspeech_gsmfr -lspeech_td -lvm \
-Bstatic -L /opt/intel/composer_xe_2013_sp1.2.144/ipp/lib/intel64 \
-lippsc -lipps -lippac -lippcc -lippch -lippcv -lippdc -lippdi -lippgen -lippi -lippj -lippm -lippr -lippvc -lippcore -lippvm -lirc \
-static -static-libgcc -static-libstdc++ -Bstatic -lpthread -Bstatic -ldl

大功告成。

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