linuxgcccodeblocksgracenoteintel-ipp

Gracenote GNSDK compile on linux


I want to compile an application with GNSDK (Gracenote SDK) on linux but I have errors (I use Code::Blocks). I wan't to use gracenote fingerprint with musicid_file_trackid function.

My compilation with Visual Studio on Windows work fine but not on Linux (Code::Blocks with GNU GCC Compiler).

I have this issues :

||=== Build: Release in Gracenote (compiler: GNU GCC Compiler) ===|
gcsl_fingerprint.c|| référence indéfinie vers « ippStaticInit »|
gn_patchfp.c|| référence indéfinie vers « ippStaticInit »|
CMFingerprinter.c|| référence indéfinie vers « ippsFree »|
CMFingerprinter.c|| référence indéfinie vers « ippsMalloc_32f »|
CMFrameManager.c|| référence indéfinie vers « ippsDCTFwdFree_32f »|
CMFrameManager.c|| référence indéfinie vers « ippsFree »|
CMFrameManager.c|| référence indéfinie vers « ippsDCTFwdInitAlloc_32f »|
CMFrameManager.c|| référence indéfinie vers « ippsDCTFwdInitAlloc_32f »|
CMFrameManager.c|| référence indéfinie vers « ippsDCTFwdGetBufSize_32f »|
CMFrameManager.c|| référence indéfinie vers « ippsMalloc_8u »|
CMFrameManager.c|| référence indéfinie vers « ippsDCTFwdGetBufSize_32f »|
CMFrameManager.c|| référence indéfinie vers « ippsMalloc_8u »|
CMFrameManager.c|| référence indéfinie vers « ippsDCTFwd_32f_I »|
CMFrameManager.c|| référence indéfinie vers « ippsDCTFwd_32f_I »|
CMHistogramEqualizer.c|| référence indéfinie vers « ippsMinMax_32f »|
CMHistogramEqualizer.c|| référence indéfinie vers « ippsMinMax_32f »|
CMHistogramEqualizer.c|| référence indéfinie vers « ippsSubC_32f_I »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsMalloc_32s »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsMalloc_32s »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsFFTInitAlloc_R_32s »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsFFTFree_R_32s »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsFree »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsFree »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsFFTGetBufSize_R_32s »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsMalloc_8u »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsAbs_32s_I »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsFree »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsFFTFree_R_32s »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsFree »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsFree »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsFree »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsMaxAbs_32s »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsLShiftC_32s_I »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsRShiftC_32s_I »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsMul_32s_ISfs »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsFFTFwd_RToPerm_32s_Sfs »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsMagSquared_32sc32s_Sfs »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsDotProd_16s32s32s_Sfs »|
FixedFAPIFingerprinter.c|| référence indéfinie vers « ippsDotProd_16s32s32s_Sfs »|
GNDSP_Resampler.c|| référence indéfinie vers « ippsFree »|
GNDSP_Resampler.c|| référence indéfinie vers « ippsMalloc_32f »|
GNDSP_Resampler.c|| référence indéfinie vers « ippsDotProd_32f »|
GNDSP_Resampler.c|| référence indéfinie vers « ippsDotProd_32f »|
GNDSP_Resampler.c|| référence indéfinie vers « ippsDotProd_32f »|
GNDSP_Resampler.c|| référence indéfinie vers « ippsDotProd_32f »|
GNDSP_Resampler.c|| référence indéfinie vers « ippsDotProd_32f »|
lib_static/libgnsdk_dsp.a(GNDSP_Resampler.o):GNDSP_Resampler.c|| encore plus de références indéfinies suivent vers « ippsDotProd_32f »|
gcsl_memory_markers.c|| référence indéfinie vers « pthread_key_create »|
gcsl_memory_markers.c|| référence indéfinie vers « pthread_key_delete »|
gcsl_memory_markers.c|| référence indéfinie vers « pthread_getspecific »|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build failed: 50 error(s), 0 warning(s) (0 minute(s), 3 second(s)) ===|

Linker commaandline:

    g++ -Llib -Llib_static -o bin/Release/Gracenote obj/Release/main.o  -s -pthread  lib_static/libgnsdk_dsp.a lib_static/libgnsdk_link.a lib_static/libgnsdk_lookup_local.a lib_static/libgnsdk_lookup_localstream.a lib_static/libgnsdk_manager.a lib_static/libgnsdk_moodgrid.a lib_static/libgnsdk_musicid.a lib_static/libgnsdk_musicid_file.a lib_static/libgnsdk_musicid_stream.a lib_static/libgnsdk_playlist.a lib_static/libgnsdk_storage_sqlite.a lib_static/libgnsdk_video.a 


-------------- Build: Release in Gracenote (compiler: GNU GCC Compiler)---------------

g++ -Llib -Llib_static -o bin/Release/Gracenote obj/Release/main.o  -s -pthread  lib_static/libgnsdk_dsp.a lib_static/libgnsdk_link.a lib_static/libgnsdk_lookup_local.a lib_static/libgnsdk_lookup_localstream.a lib_static/libgnsdk_manager.a lib_static/libgnsdk_moodgrid.a lib_static/libgnsdk_musicid.a lib_static/libgnsdk_musicid_file.a lib_static/libgnsdk_musicid_stream.a lib_static/libgnsdk_playlist.a lib_static/libgnsdk_storage_sqlite.a lib_static/libgnsdk_video.a
lib_static/libgnsdk_dsp.a(gcsl_fingerprint.o): dans la fonction « _fingerprint_init_func »:
gcsl_fingerprint.c:(.text+0xa1): référence indéfinie vers « ippStaticInit »
lib_static/libgnsdk_dsp.a(gn_patchfp.o): dans la fonction « patchfp_initialize »:
gn_patchfp.c:(.text+0x5): référence indéfinie vers « ippStaticInit »
lib_static/libgnsdk_dsp.a(CMFingerprinter.o): dans la fonction « CMFP_Destroy »:
CMFingerprinter.c:(.text+0xc2): référence indéfinie vers « ippsFree »
lib_static/libgnsdk_dsp.a(CMFingerprinter.o): dans la fonction « CMFP_Create »:
CMFingerprinter.c:(.text+0x285): référence indéfinie vers « ippsMalloc_32f »
lib_static/libgnsdk_dsp.a(CMFrameManager.o): dans la fonction « CMFM_Destroy »:
CMFrameManager.c:(.text+0x211): référence indéfinie vers « ippsDCTFwdFree_32f »
CMFrameManager.c:(.text+0x231): référence indéfinie vers « ippsFree »
lib_static/libgnsdk_dsp.a(CMFrameManager.o): dans la fonction « CMFM_Create »:
CMFrameManager.c:(.text+0x34d): référence indéfinie vers « ippsDCTFwdInitAlloc_32f »
CMFrameManager.c:(.text+0x461): référence indéfinie vers « ippsDCTFwdInitAlloc_32f »
CMFrameManager.c:(.text+0x4af): référence indéfinie vers « ippsDCTFwdGetBufSize_32f »
CMFrameManager.c:(.text+0x4bf): référence indéfinie vers « ippsMalloc_8u »
CMFrameManager.c:(.text+0x4d9): référence indéfinie vers « ippsDCTFwdGetBufSize_32f »
CMFrameManager.c:(.text+0x4e5): référence indéfinie vers « ippsMalloc_8u »
lib_static/libgnsdk_dsp.a(CMFrameManager.o): dans la fonction « CMFM_AppendDualPCMData »:
CMFrameManager.c:(.text+0xe38): référence indéfinie vers « ippsDCTFwd_32f_I »
CMFrameManager.c:(.text+0xf53): référence indéfinie vers « ippsDCTFwd_32f_I »
lib_static/libgnsdk_dsp.a(CMHistogramEqualizer.o): dans la fonction « hist_eq_dual »:
CMHistogramEqualizer.c:(.text+0x152): référence indéfinie vers « ippsMinMax_32f »
CMHistogramEqualizer.c:(.text+0x169): référence indéfinie vers « ippsMinMax_32f »
CMHistogramEqualizer.c:(.text+0x2b4): référence indéfinie vers « ippsSubC_32f_I »
lib_static/libgnsdk_dsp.a(FixedFAPIFingerprinter.o): dans la fonction « FixedFAPIFingerprinterCreate »:
FixedFAPIFingerprinter.c:(.text+0x2fb): référence indéfinie vers « ippsMalloc_32s »
FixedFAPIFingerprinter.c:(.text+0x30f): référence indéfinie vers « ippsMalloc_32s »
FixedFAPIFingerprinter.c:(.text+0x34e): référence indéfinie vers « ippsFFTInitAlloc_R_32s »
FixedFAPIFingerprinter.c:(.text+0x3af): référence indéfinie vers « ippsFFTFree_R_32s »
FixedFAPIFingerprinter.c:(.text+0x3d6): référence indéfinie vers « ippsFree »
FixedFAPIFingerprinter.c:(.text+0x3e2): référence indéfinie vers « ippsFree »
FixedFAPIFingerprinter.c:(.text+0x4a7): référence indéfinie vers « ippsFFTGetBufSize_R_32s »
FixedFAPIFingerprinter.c:(.text+0x4ba): référence indéfinie vers « ippsMalloc_8u »
FixedFAPIFingerprinter.c:(.text+0x59e): référence indéfinie vers « ippsAbs_32s_I »
FixedFAPIFingerprinter.c:(.text+0x5a8): référence indéfinie vers « ippsFree »
lib_static/libgnsdk_dsp.a(FixedFAPIFingerprinter.o): dans la fonction « FixedFAPIFingerprinterDelete »:
FixedFAPIFingerprinter.c:(.text+0x67c): référence indéfinie vers « ippsFFTFree_R_32s »
FixedFAPIFingerprinter.c:(.text+0x697): référence indéfinie vers « ippsFree »
FixedFAPIFingerprinter.c:(.text+0x6a4): référence indéfinie vers « ippsFree »
FixedFAPIFingerprinter.c:(.text+0x6d1): référence indéfinie vers « ippsFree »
lib_static/libgnsdk_dsp.a(FixedFAPIFingerprinter.o): dans la fonction « ScaleToMaxQ »:
FixedFAPIFingerprinter.c:(.text+0x96d): référence indéfinie vers « ippsMaxAbs_32s »
FixedFAPIFingerprinter.c:(.text+0x9e0): référence indéfinie vers « ippsLShiftC_32s_I »
FixedFAPIFingerprinter.c:(.text+0x9fc): référence indéfinie vers « ippsRShiftC_32s_I »
lib_static/libgnsdk_dsp.a(FixedFAPIFingerprinter.o): dans la fonction « ExtractSoftSubFingerprint »:
FixedFAPIFingerprinter.c:(.text+0xad9): référence indéfinie vers « ippsMul_32s_ISfs »
FixedFAPIFingerprinter.c:(.text+0xb18): référence indéfinie vers « ippsFFTFwd_RToPerm_32s_Sfs »
FixedFAPIFingerprinter.c:(.text+0xb6b): référence indéfinie vers « ippsMagSquared_32sc32s_Sfs »
lib_static/libgnsdk_dsp.a(FixedFAPIFingerprinter.o): dans la fonction « ApplyLowPassFilter »:
FixedFAPIFingerprinter.c:(.text+0x161c): référence indéfinie vers « ippsDotProd_16s32s32s_Sfs »
lib_static/libgnsdk_dsp.a(FixedFAPIFingerprinter.o): dans la fonction « ApplyLowPassHQ »:
FixedFAPIFingerprinter.c:(.text+0x166c): référence indéfinie vers « ippsDotProd_16s32s32s_Sfs »
lib_static/libgnsdk_dsp.a(GNDSP_Resampler.o): dans la fonction « GNDSP_DestroyResampler »:
GNDSP_Resampler.c:(.text+0x41): référence indéfinie vers « ippsFree »
lib_static/libgnsdk_dsp.a(GNDSP_Resampler.o): dans la fonction « GNDSP_CreateResampler »:
GNDSP_Resampler.c:(.text+0x539): référence indéfinie vers « ippsMalloc_32f »
lib_static/libgnsdk_dsp.a(GNDSP_Resampler.o): dans la fonction « GNDSP_Resample »:
GNDSP_Resampler.c:(.text+0xa39): référence indéfinie vers « ippsDotProd_32f »
GNDSP_Resampler.c:(.text+0xa51): référence indéfinie vers « ippsDotProd_32f »
GNDSP_Resampler.c:(.text+0xa69): référence indéfinie vers « ippsDotProd_32f »
GNDSP_Resampler.c:(.text+0xa85): référence indéfinie vers « ippsDotProd_32f »
GNDSP_Resampler.c:(.text+0xacf): référence indéfinie vers « ippsDotProd_32f »
lib_static/libgnsdk_dsp.a(GNDSP_Resampler.o):GNDSP_Resampler.c:(.text+0xb31): encore plus de références indéfinies suivent vers « ippsDotProd_32f »
lib_static/libgnsdk_manager.a(gcsl_process.o): dans la fonction « gcsl_process_library_sym »:
gcsl_process.c:(.text+0x49): référence indéfinie vers « dlsym »
lib_static/libgnsdk_manager.a(gcsl_process.o): dans la fonction « gcsl_process_library_load »:
gcsl_process.c:(.text+0x262): référence indéfinie vers « dlopen »
gcsl_process.c:(.text+0x366): référence indéfinie vers « dlclose »
Process terminated with status 1 (0 minute(s), 1 second(s))
50 error(s), 0 warning(s) (0 minute(s), 1 second(s))

How can I resolved this problem ?

Thank you in advance.

Vincent LEVEQUE

Edit : I have tried your recommandation but with this linker options :

-lgnsdk_dsp
-lgnsdk_link
-lgnsdk_lookup_local
-lgnsdk_lookup_localstream
-lgnsdk_manager
-lgnsdk_moodgrid
-lgnsdk_musicid
-lgnsdk_musicid_file
-lgnsdk_musicid_stream
-lgnsdk_playlist
-lgnsdk_storage_sqlite
-lgnsdk_video
-lippcore
-lippcc
-lippch
-lippcv
-lippdc
-lippi
-lipps
-lippvm
-pthread

But I have always errors :

-------------- Clean: Release in Gracenote (compiler: GNU GCC Compiler)---------------

Cleaned "Gracenote - Release"

-------------- Build: Release in Gracenote (compiler: GNU GCC Compiler)---------------

gcc -Wall -O2  -c /home/membre/codeblocks/Gracenote/main.c -o obj/Release/main.o
g++ -Llib/linux_x86-64 -Llib_static/linux_x86-64 -Lipps -o bin/Release/Gracenote obj/Release/main.o  -s -lgnsdk_dsp -lgnsdk_link -lgnsdk_lookup_local -lgnsdk_lookup_localstream -lgnsdk_manager -lgnsdk_moodgrid -lgnsdk_musicid -lgnsdk_musicid_file -lgnsdk_musicid_stream -lgnsdk_playlist -lgnsdk_storage_sqlite -lgnsdk_video -lippcore -lippcc -lippch -lippcv -lippdc -lippi -lipps -lippvm -pthread  
lib_static/linux_x86-64/libgnsdk_dsp.a(gcsl_fingerprint.o): dans la fonction « _fingerprint_init_func »:
gcsl_fingerprint.c:(.text+0xa1): référence indéfinie vers « ippStaticInit »
lib_static/linux_x86-64/libgnsdk_dsp.a(gn_patchfp.o): dans la fonction « patchfp_initialize »:
gn_patchfp.c:(.text+0x5): référence indéfinie vers « ippStaticInit »
lib_static/linux_x86-64/libgnsdk_dsp.a(CMFrameManager.o): dans la fonction « CMFM_Destroy »:
CMFrameManager.c:(.text+0x211): référence indéfinie vers « ippsDCTFwdFree_32f »
lib_static/linux_x86-64/libgnsdk_dsp.a(CMFrameManager.o): dans la fonction « CMFM_Create »:
CMFrameManager.c:(.text+0x34d): référence indéfinie vers « ippsDCTFwdInitAlloc_32f »
CMFrameManager.c:(.text+0x461): référence indéfinie vers « ippsDCTFwdInitAlloc_32f »
CMFrameManager.c:(.text+0x4af): référence indéfinie vers « ippsDCTFwdGetBufSize_32f »
CMFrameManager.c:(.text+0x4d9): référence indéfinie vers « ippsDCTFwdGetBufSize_32f »
lib_static/linux_x86-64/libgnsdk_dsp.a(FixedFAPIFingerprinter.o): dans la fonction « FixedFAPIFingerprinterCreate »:
FixedFAPIFingerprinter.c:(.text+0x34e): référence indéfinie vers « ippsFFTInitAlloc_R_32s »
FixedFAPIFingerprinter.c:(.text+0x3af): référence indéfinie vers « ippsFFTFree_R_32s »
FixedFAPIFingerprinter.c:(.text+0x4a7): référence indéfinie vers « ippsFFTGetBufSize_R_32s »
lib_static/linux_x86-64/libgnsdk_dsp.a(FixedFAPIFingerprinter.o): dans la fonction « FixedFAPIFingerprinterDelete »:
FixedFAPIFingerprinter.c:(.text+0x67c): référence indéfinie vers « ippsFFTFree_R_32s »
lib_static/linux_x86-64/libgnsdk_dsp.a(FixedFAPIFingerprinter.o): dans la fonction « ExtractSoftSubFingerprint »:
FixedFAPIFingerprinter.c:(.text+0xb18): référence indéfinie vers « ippsFFTFwd_RToPerm_32s_Sfs »
FixedFAPIFingerprinter.c:(.text+0xb6b): référence indéfinie vers « ippsMagSquared_32sc32s_Sfs »
lib_static/linux_x86-64/libgnsdk_manager.a(gcsl_process.o): dans la fonction « gcsl_process_library_sym »:
gcsl_process.c:(.text+0x49): référence indéfinie vers « dlsym »
lib_static/linux_x86-64/libgnsdk_manager.a(gcsl_process.o): dans la fonction « gcsl_process_library_load »:
gcsl_process.c:(.text+0x262): référence indéfinie vers « dlopen »
gcsl_process.c:(.text+0x366): référence indéfinie vers « dlclose »
lib_static/linux_x86-64/libgnsdk_manager.a(gcsl_process.o): dans la fonction « gcsl_process_library_free »:
gcsl_process.c:(.text+0x411): référence indéfinie vers « dlclose »
lib_static/linux_x86-64/libgnsdk_musicid_stream.a(gnsdk_musicid_stream.o): dans la fonction « gnsdk_musicidstream_channel_audio_write »:
gnsdk_musicid_stream.c:(.text+0x2982): référence indéfinie vers « gcsl_circbuf_write »
lib_static/linux_x86-64/libgnsdk_musicid_stream.a(mids_fsm.o): dans la fonction « mids_fsm_state_process_circularbuffer »:
mids_fsm.c:(.text+0x1043): référence indéfinie vers « gcsl_circbuf_size »
mids_fsm.c:(.text+0x10ec): référence indéfinie vers « gcsl_circbuf_get_newest »
lib_static/linux_x86-64/libgnsdk_musicid_stream.a(mids_internal.o): dans la fonction « audio_session_delete »:
mids_internal.c:(.text+0x527): référence indéfinie vers « gcsl_circbuf_delete »
lib_static/linux_x86-64/libgnsdk_musicid_stream.a(mids_internal.o): dans la fonction « audio_session_create »:
mids_internal.c:(.text+0x8ed): référence indéfinie vers « gcsl_circbuf_create »
lib_static/linux_x86-64/libgnsdk_storage_sqlite.a(sqlite3.o): dans la fonction « unixDlSym »:
sqlite3.c:(.text+0x4606): référence indéfinie vers « dlsym »
lib_static/linux_x86-64/libgnsdk_storage_sqlite.a(sqlite3.o): dans la fonction « unixDlError »:
sqlite3.c:(.text+0x1e4f9): référence indéfinie vers « dlerror »
lib_static/linux_x86-64/libgnsdk_storage_sqlite.a(sqlite3.o): dans la fonction « unixDlOpen »:
sqlite3.c:(.text+0x45f9): référence indéfinie vers « dlopen »
lib_static/linux_x86-64/libgnsdk_storage_sqlite.a(sqlite3.o): dans la fonction « unixDlClose »:
sqlite3.c:(.text+0x4614): référence indéfinie vers « dlclose »
ipps/libipps.a(jmp_ippsAbs_32s_I_as.o): dans la fonction « aucun symbole »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsAbs_32s_I_as.s:(.text+0x1): référence indéfinie vers « ippSafeInit »
ipps/libipps.a(jmp_ippsAbs_32s_I_as.o): dans la fonction « ippsAbs_32s_I »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsAbs_32s_I_as.s:(.text+0x13): référence indéfinie vers « ippJumpIndexForMergedLibs »
ipps/libipps.a(jmp_ippsDCTFwd_32f_I_as.o): dans la fonction « aucun symbole »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsDCTFwd_32f_I_as.s:(.text+0x1): référence indéfinie vers « ippSafeInit »
ipps/libipps.a(jmp_ippsDCTFwd_32f_I_as.o): dans la fonction « ippsDCTFwd_32f_I »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsDCTFwd_32f_I_as.s:(.text+0x13): référence indéfinie vers « ippJumpIndexForMergedLibs »
ipps/libipps.a(jmp_ippsDotProd_16s32s32s_Sfs_as.o): dans la fonction « aucun symbole »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsDotProd_16s32s32s_Sfs_as.s:(.text+0x1): référence indéfinie vers « ippSafeInit »
ipps/libipps.a(jmp_ippsDotProd_16s32s32s_Sfs_as.o): dans la fonction « ippsDotProd_16s32s32s_Sfs »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsDotProd_16s32s32s_Sfs_as.s:(.text+0x13): référence indéfinie vers « ippJumpIndexForMergedLibs »
ipps/libipps.a(jmp_ippsDotProd_32f_as.o): dans la fonction « aucun symbole »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsDotProd_32f_as.s:(.text+0x1): référence indéfinie vers « ippSafeInit »
ipps/libipps.a(jmp_ippsDotProd_32f_as.o): dans la fonction « ippsDotProd_32f »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsDotProd_32f_as.s:(.text+0x13): référence indéfinie vers « ippJumpIndexForMergedLibs »
ipps/libipps.a(jmp_ippsFree_as.o): dans la fonction « aucun symbole »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsFree_as.s:(.text+0x1): référence indéfinie vers « ippSafeInit »
ipps/libipps.a(jmp_ippsFree_as.o): dans la fonction « ippsFree »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsFree_as.s:(.text+0x13): référence indéfinie vers « ippJumpIndexForMergedLibs »
ipps/libipps.a(jmp_ippsLShiftC_32s_I_as.o): dans la fonction « aucun symbole »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsLShiftC_32s_I_as.s:(.text+0x1): référence indéfinie vers « ippSafeInit »
ipps/libipps.a(jmp_ippsLShiftC_32s_I_as.o): dans la fonction « ippsLShiftC_32s_I »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsLShiftC_32s_I_as.s:(.text+0x13): référence indéfinie vers « ippJumpIndexForMergedLibs »
ipps/libipps.a(jmp_ippsMalloc_32f_as.o): dans la fonction « aucun symbole »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsMalloc_32f_as.s:(.text+0x1): référence indéfinie vers « ippSafeInit »
ipps/libipps.a(jmp_ippsMalloc_32f_as.o): dans la fonction « ippsMalloc_32f »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsMalloc_32f_as.s:(.text+0x13): référence indéfinie vers « ippJumpIndexForMergedLibs »
ipps/libipps.a(jmp_ippsMalloc_32s_as.o): dans la fonction « aucun symbole »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsMalloc_32s_as.s:(.text+0x1): référence indéfinie vers « ippSafeInit »
ipps/libipps.a(jmp_ippsMalloc_32s_as.o): dans la fonction « ippsMalloc_32s »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsMalloc_32s_as.s:(.text+0x13): référence indéfinie vers « ippJumpIndexForMergedLibs »
ipps/libipps.a(jmp_ippsMalloc_8u_as.o): dans la fonction « aucun symbole »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsMalloc_8u_as.s:(.text+0x1): référence indéfinie vers « ippSafeInit »
ipps/libipps.a(jmp_ippsMalloc_8u_as.o): dans la fonction « ippsMalloc_8u »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsMalloc_8u_as.s:(.text+0x13): référence indéfinie vers « ippJumpIndexForMergedLibs »
ipps/libipps.a(jmp_ippsMaxAbs_32s_as.o): dans la fonction « aucun symbole »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsMaxAbs_32s_as.s:(.text+0x1): référence indéfinie vers « ippSafeInit »
ipps/libipps.a(jmp_ippsMaxAbs_32s_as.o): dans la fonction « ippsMaxAbs_32s »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsMaxAbs_32s_as.s:(.text+0x13): référence indéfinie vers « ippJumpIndexForMergedLibs »
ipps/libipps.a(jmp_ippsMinMax_32f_as.o): dans la fonction « aucun symbole »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsMinMax_32f_as.s:(.text+0x1): référence indéfinie vers « ippSafeInit »
ipps/libipps.a(jmp_ippsMinMax_32f_as.o): dans la fonction « ippsMinMax_32f »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsMinMax_32f_as.s:(.text+0x13): référence indéfinie vers « ippJumpIndexForMergedLibs »
ipps/libipps.a(jmp_ippsMul_32s_ISfs_as.o): dans la fonction « aucun symbole »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsMul_32s_ISfs_as.s:(.text+0x1): référence indéfinie vers « ippSafeInit »
ipps/libipps.a(jmp_ippsMul_32s_ISfs_as.o): dans la fonction « ippsMul_32s_ISfs »:
/localdisk/commander/production/ipp901gold/linux_intel64/.build/linux/obj/intel64/ipps/emerged_compl/nonpic/dispatcher/jmp_ippsMul_32s_ISfs_as.s:(.text+0x13): référence indéfinie vers « ippJumpIndexForMergedLibs »
Process terminated with status 1 (0 minute(s), 3 second(s))
50 error(s), 0 warning(s) (0 minute(s), 3 second(s))

Solution

  • The Gracenote SDK libraries that you are linking make calls to functions that are defined in some or other of the Intel Integrated Performance Primitives libraries. The Gracenote SDK (at least the one you have got) evidently expects you to have those libraries. Perhaps they are contained somewhere in the SDK. Perhaps you are supposed to get them yourself. Anyhow, you are not linking any of them; hence the undefined reference linkage errors.

    These libraries have names of the form libipp*.a. Look for them in your SDK. If you can't find them, you can download them free from here

    Once you have got them, you will need to link your program with a commandline like:

    g++ -L/path/to/lib -L/path/to/lib_static -L/path/to/the/IPP/libraries \ 
    -o bin/Release/Gracenote obj/Release/main.o  \
    -lgnsdk_dsp \
    -lgnsdk_link \
    -lgnsdk_lookup_local \ 
    -lgnsdk_lookup_localstream \ 
    -lgnsdk_manager \
    -lgnsdk_moodgrid \
    -lgnsdk_musicid \
    -lgnsdk_musicid_file \ 
    -lgnsdk_musicid_stream \ 
    -lgnsdk_playlist \
    -lgnsdk_storage_sqlite \ 
    -lgnsdk_video \
    -lipp? \
    -lipp?? \
    -lipp??? \
    -pthread
    

    where -lipp? -lipp?? -lipp??? are whatever IPP libraries are needed to resolve all the references in the SDK libraries.

    You need to configure the options in your Code::Blocks project so that it will generate the correct linkage commandline for g++. Do this as follows:

    In -> Build options -> Search directories -> Linker, add each of:

    /path/to/lib 
    /path/to/lib_static 
    /path/to/the/IPP/libraries
    

    In -> Build options -> Linker settings -> Link libraries, remove all the lib_static/libgnsdk???.a options you have entered there.

    In -> Build options -> Linker settings -> Other linker options, add all of the -l<name> options that I've listed above, plus -pthread, in the order that I've listed them. (Note that -l<name> is correct; -llib<name> is wrong.)

    You can experiment to discover exactly which IPP libraries you need for a successul linkage.