Gracenote GNSDK 在 linux 上编译
Gracenote GNSDK compile on linux
我想在 linux 上使用 GNSDK (Gracenote SDK) 编译应用程序,但我有错误(我使用 Code::Blocks)。我不想将 gracenote 指纹与 musicid_file_trackid 功能一起使用。
我在 Windows 上用 Visual Studio 编译工作正常但在 Linux 上不行(Code::Blocks 使用 GNU GCC 编译器)。
我有这个问题:
||=== 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))
我该如何解决这个问题?
提前谢谢你。
文森特·莱维克
编辑:
我已经尝试了你的建议,但使用了这个链接器选项:
-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
但我总是出错:
-------------- 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))
您link使用的 Gracenote SDK 库调用函数
在某些或其他英特尔集成性能基元库中定义的。
Gracenote SDK(至少是你拥有的那个)显然希望你拥有那些
图书馆。也许它们包含在 SDK 的某处。也许你应该
自己去拿。无论如何,您 link 不是他们中的任何一个;因此未定义的参考
link年龄错误。
这些库的名称格式为 libipp*.a
。在您的 SDK 中查找它们。如果你
找不到它们,您可以从 here
免费下载它们
获得它们后,您将需要 link 您的程序使用如下命令行:
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
其中 -lipp? -lipp?? -lipp???
是需要的任何 IPP 库
解析 SDK 库中的所有引用。
您需要在 Code::Blocks 项目中配置选项,以便它
将为 g++ 生成正确的 linkage 命令行。按如下方式执行此操作:
在 -> 构建选项 -> 搜索目录 -> Linker,分别添加:
/path/to/lib
/path/to/lib_static
/path/to/the/IPP/libraries
在 -> 构建选项 -> Linker 设置 - > Link 图书馆,
删除您在此处输入的所有 lib_static/libgnsdk???.a
选项。
在 -> 构建选项 -> Linker 设置 - > 其他link其他选项,
按顺序添加我上面列出的所有 -l<name>
选项以及 -pthread
我已经列出了它们。 (注意 -l<name>
是正确的;-llib<name>
是错误的。)
您可以通过实验来准确地发现成功 linkage 需要哪些 IPP 库。
我想在 linux 上使用 GNSDK (Gracenote SDK) 编译应用程序,但我有错误(我使用 Code::Blocks)。我不想将 gracenote 指纹与 musicid_file_trackid 功能一起使用。
我在 Windows 上用 Visual Studio 编译工作正常但在 Linux 上不行(Code::Blocks 使用 GNU GCC 编译器)。
我有这个问题:
||=== 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))
我该如何解决这个问题?
提前谢谢你。
文森特·莱维克
编辑: 我已经尝试了你的建议,但使用了这个链接器选项:
-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
但我总是出错:
-------------- 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))
您link使用的 Gracenote SDK 库调用函数 在某些或其他英特尔集成性能基元库中定义的。 Gracenote SDK(至少是你拥有的那个)显然希望你拥有那些 图书馆。也许它们包含在 SDK 的某处。也许你应该 自己去拿。无论如何,您 link 不是他们中的任何一个;因此未定义的参考 link年龄错误。
这些库的名称格式为 libipp*.a
。在您的 SDK 中查找它们。如果你
找不到它们,您可以从 here
获得它们后,您将需要 link 您的程序使用如下命令行:
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
其中 -lipp? -lipp?? -lipp???
是需要的任何 IPP 库
解析 SDK 库中的所有引用。
您需要在 Code::Blocks 项目中配置选项,以便它 将为 g++ 生成正确的 linkage 命令行。按如下方式执行此操作:
在 -> 构建选项 -> 搜索目录 -> Linker,分别添加:
/path/to/lib
/path/to/lib_static
/path/to/the/IPP/libraries
在 -> 构建选项 -> Linker 设置 - > Link 图书馆,
删除您在此处输入的所有 lib_static/libgnsdk???.a
选项。
在 -> 构建选项 -> Linker 设置 - > 其他link其他选项,
按顺序添加我上面列出的所有 -l<name>
选项以及 -pthread
我已经列出了它们。 (注意 -l<name>
是正确的;-llib<name>
是错误的。)
您可以通过实验来准确地发现成功 linkage 需要哪些 IPP 库。