Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

Compiling a raytracing sample

jackissimus
Beginner
247 Views
Hello. I am trying to compile a Windows raytracing sample on Linux. Theoretically, it shouldn't be a problem, right? So I added the four files to an Eclilpse Project and I started to compile and it gave me a linking error. It did the same when I did in the command line, so it's not an eclipse related problem. Could you give me some pointers what am I doing wrong? Here is, what happened:

[shell]make -k all 
Building file: ../ext_rply.c
Invoking: Intel Intel 64 C Compiler
icc -I/usr/include -I/usr/lib/gcc/x86_64-linux-gnu/4.2/include -MMD -MP -MF"ext_rply.d" -MT"ext_rply.d" -c -o "ext_rply.o" "../ext_rply.c"
../ext_rply.c(1037): warning #188: enumerated type mixed with another type
      property->type = -1;
                     ^

../ext_rply.c(1038): warning #188: enumerated type mixed with another type
      property->length_type = -1;
                            ^

../ext_rply.c(1039): warning #188: enumerated type mixed with another type
      property->value_type = -1;
                           ^

../ext_rply.c(1097): warning #188: enumerated type mixed with another type
      ply->storage_mode = ply_find_string(BWORD(ply), ply_storage_mode_list);
                        ^

../ext_rply.c(1137): warning #188: enumerated type mixed with another type
      property->type = ply_find_string(BWORD(ply), ply_type_list);
                     ^

../ext_rply.c(1142): warning #188: enumerated type mixed with another type
          property->length_type = ply_find_string(BWORD(ply), ply_type_list);
                                ^

../ext_rply.c(1145): warning #188: enumerated type mixed with another type
          property->value_type = ply_find_string(BWORD(ply), ply_type_list);
                               ^

Finished building: ../ext_rply.c
 
Building file: ../ippr_readply.cpp
Invoking: Intel Intel 64 C++ Compiler 
icpc -I/usr/include/c++/4.2 -I/opt/intel/Compiler/11.0/074/ipp/em64t/include -MMD -MP -MF"ippr_readply.d" -MT"ippr_readply.d" -c -o "ippr_readply.o" "../ippr_readply.cpp"
Finished building: ../ippr_readply.cpp
 
Building file: ../ippr_sample.cpp
Invoking: Intel Intel 64 C++ Compiler 
icpc -I/usr/include/c++/4.2 -I/opt/intel/Compiler/11.0/074/ipp/em64t/include -MMD -MP -MF"ippr_sample.d" -MT"ippr_sample.d" -c -o "ippr_sample.o" "../ippr_sample.cpp"
Finished building: ../ippr_sample.cpp
 
Building target: Raytracer
Invoking: Intel Intel 64 C++ Linker
icpc  -o"Raytracer"  ./ext_rply.o ./ippr_readply.o ./ippr_sample.o   
./ippr_sample.o: In function `main':
../ippr_sample.cpp:(.text+0x139): undefined reference to `ippStaticInit'
../ippr_sample.cpp:(.text+0x1ea): undefined reference to `ippGetCpuFreqMhz'
../ippr_sample.cpp:(.text+0x2f3): undefined reference to `ippiMalloc_32f_C3'
../ippr_sample.cpp:(.text+0x312): undefined reference to `ippiMalloc_32f_C3'
../ippr_sample.cpp:(.text+0x49d): undefined reference to `ippsMalloc_32s'
../ippr_sample.cpp:(.text+0x4b4): undefined reference to `ippsMalloc_32f'
../ippr_sample.cpp:(.text+0x8db): undefined reference to `ippGetCpuClocks'
../ippr_sample.cpp:(.text+0xa45): undefined reference to `ippsSet_32f'
../ippr_sample.cpp:(.text+0xa57): undefined reference to `ippsSet_32f'
../ippr_sample.cpp:(.text+0xa69): undefined reference to `ippsSet_32f'
../ippr_sample.cpp:(.text+0xa82): undefined reference to `ippsSet_32f'
../ippr_sample.cpp:(.text+0xad4): undefined reference to `ipprCastEye_32f'
../ippr_sample.cpp:(.text+0xaf1): undefined reference to `ippsSet_32f'
../ippr_sample.cpp:(.text+0xb39): undefined reference to `ipprIntersectEyeSO_32f'
../ippr_sample.cpp:(.text+0xb70): undefined reference to `ipprHitPoint3DEpsS0_32f_M'
../ippr_sample.cpp:(.text+0xb8e): undefined reference to `ipprSurfFlatNormal_32f'
../ippr_sample.cpp:(.text+0xbb1): undefined reference to `ipprDot_32f_P3C1M'
../ippr_sample.cpp:(.text+0xbc7): undefined reference to `ippsSet_32s'
../ippr_sample.cpp:(.text+0xbdd): undefined reference to `ippsSet_32s'
../ippr_sample.cpp:(.text+0xbf3): undefined reference to `ippsSet_32s'
../ippr_sample.cpp:(.text+0xdd4): undefined reference to `ippGetCpuClocks'
../ippr_sample.cpp:(.text+0xebd): undefined reference to `ippiResize_32f_C3R'
../ippr_sample.cpp:(.text+0x100c): undefined reference to `ippsMalloc_8u'
../ippr_sample.cpp:(.text+0x101c): undefined reference to `ippsSet_8u'
../ippr_sample.cpp:(.text+0x1200): undefined reference to `ippsFree'
../ippr_sample.cpp:(.text+0x1221): undefined reference to `ippiFree'
../ippr_sample.cpp:(.text+0x122e): undefined reference to `ippiFree'
../ippr_sample.cpp:(.text+0x123b): undefined reference to `ippsFree'
../ippr_sample.cpp:(.text+0x1248): undefined reference to `ippsFree'
../ippr_sample.cpp:(.text+0x1255): undefined reference to `ippsFree'
../ippr_sample.cpp:(.text+0x1262): undefined reference to `ippsFree'
../ippr_sample.cpp:(.text+0x127b): undefined reference to `ippsFree'
../ippr_sample.cpp:(.text+0x128a): undefined reference to `ipprKDTreeFree'
../ippr_sample.cpp:(.text+0x1292): undefined reference to `ippsFree'
../ippr_sample.cpp:(.text+0x129a): undefined reference to `ippsFree'
../ippr_sample.cpp:(.text+0x1374): undefined reference to `ippsSet_32f'
../ippr_sample.cpp:(.text+0x1391): undefined reference to `ippsSet_32f'
../ippr_sample.cpp:(.text+0x13b1): undefined reference to `ippsSet_32f'
../ippr_sample.cpp:(.text+0x13c9): undefined reference to `ippsCopy_32s'
../ippr_sample.cpp:(.text+0x140a): undefined reference to `ipprCastShadowSO_32f'
../ippr_sample.cpp:(.text+0x143e): undefined reference to `ipprIntersectAnySO_32f'
../ippr_sample.cpp:(.text+0x1745): undefined reference to `ippiCopy_32f_P3C3R'
../ippr_sample.cpp:(.text+0x1762): undefined reference to `ipprCastReflectionRay_32f'
../ippr_sample.cpp:(.text+0x1777): undefined reference to `ippsSet_32f'
../ippr_sample.cpp:(.text+0x1800): undefined reference to `ipprIntersectMO_32f'
../ippr_sample.cpp:(.text+0x1832): undefined reference to `ipprHitPoint3DEpsM0_32f_M'
../ippr_sample.cpp:(.text+0x18f4): undefined reference to `ipprCastReflectionRay_32f'
../ippr_sample.cpp:(.text+0x1943): undefined reference to `ipprDot_32f_P3C1M'
./ippr_sample.o: In function `populate_scene_context(char const*, sceneContext&, double, int)':
../ippr_sample.cpp:(.text+0x1cde): undefined reference to `read_plyfile(char const*, std::vector&, std::vector&)'
../ippr_sample.cpp:(.text+0x28ca): undefined reference to `ippsMalloc_32f'
../ippr_sample.cpp:(.text+0x291d): undefined reference to `ippsMalloc_32s'
../ippr_sample.cpp:(.text+0x29b3): undefined reference to `ippsMalloc_32f'
../ippr_sample.cpp:(.text+0x29d2): undefined reference to `ipprTriangleNormal_32f'
../ippr_sample.cpp:(.text+0x2a57): undefined reference to `ipprTriangleAccelGetSize'
../ippr_sample.cpp:(.text+0x2a61): undefined reference to `ippsMalloc_32s'
../ippr_sample.cpp:(.text+0x2a7d): undefined reference to `ippsMalloc_8u'
../ippr_sample.cpp:(.text+0x2abd): undefined reference to `ipprSetBoundBox_32f'
../ippr_sample.cpp:(.text+0x2ac2): undefined reference to `ippGetCpuClocks'
../ippr_sample.cpp:(.text+0x2ae0): undefined reference to `ipprTriangleAccelInit'
../ippr_sample.cpp:(.text+0x2bf4): undefined reference to `ippGetCpuClocks'
./ippr_sample.o: In function `kDTreeBuild_th(KDTreeNode**, float const*, int const*, int, int, int*, void const*, int, bool*)':
../ippr_sample.cpp:(.text+0x2db7): undefined reference to `ippsCopy_8u'
../ippr_sample.cpp:(.text+0x2e07): undefined reference to `ipprKDTreeBuildAlloc'
../ippr_sample.cpp:(.text+0x2eb2): undefined reference to `ipprKDTreeBuildAlloc'
../ippr_sample.cpp:(.text+0x2efb): undefined reference to `ippsCopy_8u'
../ippr_sample.cpp:(.text+0x2f3f): undefined reference to `ippsCopy_8u'
../ippr_sample.cpp:(.text+0x32e6): undefined reference to `ippsCopy_8u'
../ippr_sample.cpp:(.text+0x3356): undefined reference to `ipprKDTreeBuildAlloc'
../ippr_sample.cpp:(.text+0x33fe): undefined reference to `ippsMalloc_32s'
../ippr_sample.cpp:(.text+0x354c): undefined reference to `ipprKDTreeFree'
../ippr_sample.cpp:(.text+0x3593): undefined reference to `ipprKDTreeFree'
./ippr_sample.o: In function `free_thrnd_contexts(rndContext*)':
../ippr_sample.cpp:(.text+0x38ea): undefined reference to `ippsFree'
../ippr_sample.cpp:(.text+0x38f2): undefined reference to `ippsFree'
./ippr_sample.o: In function `free_scene_context(sceneContext&)':
../ippr_sample.cpp:(.text+0x3909): undefined reference to `ippsFree'
../ippr_sample.cpp:(.text+0x3912): undefined reference to `ippsFree'
../ippr_sample.cpp:(.text+0x391b): undefined reference to `ippsFree'
./ippr_sample.o:../ippr_sample.cpp:(.text+0x3924): more undefined references to `ippsFree' follow
./ippr_sample.o: In function `free_scene_context(sceneContext&)':
../ippr_sample.cpp:(.text+0x3940): undefined reference to `ipprKDTreeFree'
./ippr_sample.o: In function `write_output_image(char const*, float const*, IppiSize, int)':
../ippr_sample.cpp:(.text+0x3aa8): undefined reference to `ippsMalloc_8u'
../ippr_sample.cpp:(.text+0x3ab8): undefined reference to `ippsSet_8u'
../ippr_sample.cpp:(.text+0x3c89): undefined reference to `ippsFree'
./ippr_sample.o: In function `populate_thrnd_contexts(int, rndContext**)':
../ippr_sample.cpp:(.text+0x3d48): undefined reference to `ippsMalloc_32s'
../ippr_sample.cpp:(.text+0x3d5f): undefined reference to `ippsMalloc_32f'
make: *** [Raytracer] Error 1
make: Target `all' not remade because of errors.[/shell]

Here is what I have in my .profile, I hope it's ok:
. /opt/intel/Compiler/11.0/074/bin/iccvars.sh intel64
. /opt/intel/Compiler/11.0/074/ipp/em64t/tools/env/ippvarsem64t.sh
export LC_ALL=C
export LANG=C
0 Kudos
1 Reply
Gennady_F_Intel
Moderator
247 Views

Looking at the linking errors you've got, like ippGetCpuFreqMhz, ippiMalloc_32f_C3 and etc, you must link your application with libippcoreem64t.so libippsem64t.so libipprem64t.so libipprem64t.so
about linking with IPP, see more into userguide_lnx_ia32.pdf
--Gennady

0 Kudos
Reply