Hi
It's me again!! I've moved on from compiling via scons, sorting out the libOpenCL stub libs and running the examples. The inacantation shown in the documentation under Building for linux-> How to manually build the examples has some issues that I've been trying to find a solution for but I'm not so familiar with this type of command line compilation!
I'm building natively on an Odroid XU4 board, 32 bit, but following one of the examples under "To compile an OpenCL example for Linux 32bit" The following line produces:-
odroid@odroid:~/ComputeLibrary-17.12$ g++ examples/cl_convolution.cpp utils/Utils.cpp -I. -Iinclude -std=c++11 -larm_compute -larm_compute_core -lOpenCL -o cl_convolution -DARM_COMPUTE_CL/usr/bin/ld: cannot find -larm_compute/usr/bin/ld: cannot find -larm_compute_corecollect2: error: ld returned 1 exit statusI think this is because it's looking for the .so files that should be libarm_compute and libarm_compute_core not arm_.... ? Am I correct?I changed the two entries to -L libarm_compute and -L libarm_compute_core and it seems to remove the "cannot find" error and moves on to the next stage. I tried -llibarm_compute and -llibarm_compute_core but still causes a later "cant find" error after what looks like the compile stage. The "-L " before the libs seems to get the process further down the line. But we now get a host of what I think are linkage errors, possibly to do with the STUB files that are needed during a Scons build and the LD_LIBRARY_PATH that is needed when running the executable!I can get round these issues by editing a file in the ComputeLibrary-17.12/examples folder and running scons to compile the examples, that ignores any that haven't been changed but takes a fair bit of time while during the process! I'd like to be able to compile just the file I'm working on!!
Can anyone help before I short circuit my brain??I'm trying to add a text file with the compile output, I haven't done this before so I'm not sure I'm following the correct protocol, so apologies if I'm wrong!RegardsDaveCommand line was:-g++ examples/cl_convolution.cpp utils/Utils.cpp -v -I. -Iinclude -std=c++11 -L libarm_compute -L arm_compute_core -L OpenCL -o cl_convolution -DARM_COMPUTE_CL &> compile.txtUsing built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/5/lto-wrapper Target: arm-linux-gnueabihf Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-armhf/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-armhf --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-armhf --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --disable-werror --enable-multilib --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf Thread model: posix gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) COLLECT_GCC_OPTIONS='-v' '-I' '.' '-I' 'include' '-std=c++11' '-Llibarm_compute' '-Larm_compute_core' '-LOpenCL' '-o' 'cl_convolution' '-D' 'ARM_COMPUTE_CL' '-shared-libgcc' '-march=armv7-a' '-mfloat-abi=hard' '-mfpu=vfpv3-d16' '-mthumb' '-mtls-dialect=gnu' /usr/lib/gcc/arm-linux-gnueabihf/5/cc1plus -quiet -v -I . -I include -imultiarch arm-linux-gnueabihf -D_GNU_SOURCE -D ARM_COMPUTE_CL examples/cl_convolution.cpp -quiet -dumpbase cl_convolution.cpp -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 -mthumb -mtls-dialect=gnu -auxbase cl_convolution -std=c++11 -version -fstack-protector-strong -Wformat -Wformat-security -o /tmp/cci1PXds.s GNU C++11 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) version 5.4.0 20160609 (arm-linux-gnueabihf) compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring duplicate directory "/usr/include/arm-linux-gnueabihf/c++/5" ignoring nonexistent directory "/usr/local/include/arm-linux-gnueabihf" ignoring nonexistent directory "/usr/lib/gcc/arm-linux-gnueabihf/5/../../../../arm-linux-gnueabihf/include" #include "..." search starts here: #include <...> search starts here: . include /usr/include/c++/5 /usr/include/arm-linux-gnueabihf/c++/5 /usr/include/c++/5/backward /usr/lib/gcc/arm-linux-gnueabihf/5/include /usr/local/include /usr/lib/gcc/arm-linux-gnueabihf/5/include-fixed /usr/include/arm-linux-gnueabihf /usr/include End of search list. GNU C++11 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) version 5.4.0 20160609 (arm-linux-gnueabihf) compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 12831138f3a67787c6ffebe33a0c39c6 COLLECT_GCC_OPTIONS='-v' '-I' '.' '-I' 'include' '-std=c++11' '-Llibarm_compute' '-Larm_compute_core' '-LOpenCL' '-o' 'cl_convolution' '-D' 'ARM_COMPUTE_CL' '-shared-libgcc' '-march=armv7-a' '-mfloat-abi=hard' '-mfpu=vfpv3-d16' '-mthumb' '-mtls-dialect=gnu' as -v -I . -I include -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 -meabi=5 -o /tmp/ccld62Yl.o /tmp/cci1PXds.s GNU assembler version 2.26.1 (arm-linux-gnueabihf) using BFD version (GNU Binutils for Ubuntu) 2.26.1 COLLECT_GCC_OPTIONS='-v' '-I' '.' '-I' 'include' '-std=c++11' '-Llibarm_compute' '-Larm_compute_core' '-LOpenCL' '-o' 'cl_convolution' '-D' 'ARM_COMPUTE_CL' '-shared-libgcc' '-march=armv7-a' '-mfloat-abi=hard' '-mfpu=vfpv3-d16' '-mthumb' '-mtls-dialect=gnu' /usr/lib/gcc/arm-linux-gnueabihf/5/cc1plus -quiet -v -I . -I include -imultiarch arm-linux-gnueabihf -D_GNU_SOURCE -D ARM_COMPUTE_CL utils/Utils.cpp -quiet -dumpbase Utils.cpp -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 -mthumb -mtls-dialect=gnu -auxbase Utils -std=c++11 -version -fstack-protector-strong -Wformat -Wformat-security -o /tmp/cci1PXds.s GNU C++11 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) version 5.4.0 20160609 (arm-linux-gnueabihf) compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring duplicate directory "/usr/include/arm-linux-gnueabihf/c++/5" ignoring nonexistent directory "/usr/local/include/arm-linux-gnueabihf" ignoring nonexistent directory "/usr/lib/gcc/arm-linux-gnueabihf/5/../../../../arm-linux-gnueabihf/include" #include "..." search starts here: #include <...> search starts here: . include /usr/include/c++/5 /usr/include/arm-linux-gnueabihf/c++/5 /usr/include/c++/5/backward /usr/lib/gcc/arm-linux-gnueabihf/5/include /usr/local/include /usr/lib/gcc/arm-linux-gnueabihf/5/include-fixed /usr/include/arm-linux-gnueabihf /usr/include End of search list. GNU C++11 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) version 5.4.0 20160609 (arm-linux-gnueabihf) compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 12831138f3a67787c6ffebe33a0c39c6 COLLECT_GCC_OPTIONS='-v' '-I' '.' '-I' 'include' '-std=c++11' '-Llibarm_compute' '-Larm_compute_core' '-LOpenCL' '-o' 'cl_convolution' '-D' 'ARM_COMPUTE_CL' '-shared-libgcc' '-march=armv7-a' '-mfloat-abi=hard' '-mfpu=vfpv3-d16' '-mthumb' '-mtls-dialect=gnu' as -v -I . -I include -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 -meabi=5 -o /tmp/ccRJh6NL.o /tmp/cci1PXds.s GNU assembler version 2.26.1 (arm-linux-gnueabihf) using BFD version (GNU Binutils for Ubuntu) 2.26.1 COMPILER_PATH=/usr/lib/gcc/arm-linux-gnueabihf/5/:/usr/lib/gcc/arm-linux-gnueabihf/5/:/usr/lib/gcc/arm-linux-gnueabihf/:/usr/lib/gcc/arm-linux-gnueabihf/5/:/usr/lib/gcc/arm-linux-gnueabihf/ LIBRARY_PATH=/usr/lib/gcc/arm-linux-gnueabihf/5/:/usr/lib/gcc/arm-linux-gnueabihf/5/../../../arm-linux-gnueabihf/:/usr/lib/gcc/arm-linux-gnueabihf/5/../../../../lib/:/lib/arm-linux-gnueabihf/:/lib/../lib/:/usr/lib/arm-linux-gnueabihf/:/usr/lib/../lib/:/usr/lib/gcc/arm-linux-gnueabihf/5/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-v' '-I' '.' '-I' 'include' '-std=c++11' '-Llibarm_compute' '-Larm_compute_core' '-LOpenCL' '-o' 'cl_convolution' '-D' 'ARM_COMPUTE_CL' '-shared-libgcc' '-march=armv7-a' '-mfloat-abi=hard' '-mfpu=vfpv3-d16' '-mthumb' '-mtls-dialect=gnu' /usr/lib/gcc/arm-linux-gnueabihf/5/collect2 -plugin /usr/lib/gcc/arm-linux-gnueabihf/5/liblto_plugin.so -plugin-opt=/usr/lib/gcc/arm-linux-gnueabihf/5/lto-wrapper -plugin-opt=-fresolution=/tmp/ccYDiY0Q.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --sysroot=/ --build-id --eh-frame-hdr -dynamic-linker /lib/ld-linux-armhf.so.3 -X --hash-style=gnu --as-needed -m armelf_linux_eabi -z relro -o cl_convolution /usr/lib/gcc/arm-linux-gnueabihf/5/../../../arm-linux-gnueabihf/crt1.o /usr/lib/gcc/arm-linux-gnueabihf/5/../../../arm-linux-gnueabihf/crti.o /usr/lib/gcc/arm-linux-gnueabihf/5/crtbegin.o -Llibarm_compute -Larm_compute_core -LOpenCL -L/usr/lib/gcc/arm-linux-gnueabihf/5 -L/usr/lib/gcc/arm-linux-gnueabihf/5/../../../arm-linux-gnueabihf -L/usr/lib/gcc/arm-linux-gnueabihf/5/../../../../lib -L/lib/arm-linux-gnueabihf -L/lib/../lib -L/usr/lib/arm-linux-gnueabihf -L/usr/lib/../lib -L/usr/lib/gcc/arm-linux-gnueabihf/5/../../.. /tmp/ccld62Yl.o /tmp/ccRJh6NL.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/arm-linux-gnueabihf/5/crtend.o /usr/lib/gcc/arm-linux-gnueabihf/5/../../../arm-linux-gnueabihf/crtn.o /tmp/ccld62Yl.o: In function `main_cl_convolution(int, char const**)': cl_convolution.cpp:(.text+0x22e): undefined reference to `arm_compute::CLTensor::CLTensor()' cl_convolution.cpp:(.text+0x238): undefined reference to `arm_compute::CLTensor::CLTensor()' cl_convolution.cpp:(.text+0x242): undefined reference to `arm_compute::CLTensor::CLTensor()' cl_convolution.cpp:(.text+0x246): undefined reference to `arm_compute::CLScheduler::get()' cl_convolution.cpp:(.text+0x272): undefined reference to `clGetDeviceInfo' cl_convolution.cpp:(.text+0x2d2): undefined reference to `clGetDeviceInfo' cl_convolution.cpp:(.text+0x356): undefined reference to `arm_compute::CLTensor::allocator()' cl_convolution.cpp:(.text+0x36a): undefined reference to `arm_compute::TensorInfo::TensorInfo(unsigned int, unsigned int, arm_compute::Format)' cl_convolution.cpp:(.text+0x376): undefined reference to `arm_compute::ITensorAllocator::init(arm_compute::TensorInfo const&)' cl_convolution.cpp:(.text+0x3e2): undefined reference to `arm_compute::CLTensor::allocator()' cl_convolution.cpp:(.text+0x3ee): undefined reference to `arm_compute::CLTensor::info()' cl_convolution.cpp:(.text+0x3f8): undefined reference to `arm_compute::ITensorAllocator::init(arm_compute::TensorInfo const&)' cl_convolution.cpp:(.text+0x402): undefined reference to `arm_compute::CLTensor::allocator()' cl_convolution.cpp:(.text+0x40e): undefined reference to `arm_compute::CLTensor::info()' cl_convolution.cpp:(.text+0x418): undefined reference to `arm_compute::ITensorAllocator::init(arm_compute::TensorInfo const&)' cl_convolution.cpp:(.text+0x43e): undefined reference to `arm_compute::CLConvolutionSquare<5u>::CLConvolutionSquare(std::shared_ptr<arm_compute::IMemoryManager>)' cl_convolution.cpp:(.text+0x46c): undefined reference to `arm_compute::CLConvolution3x3::configure(arm_compute::ICLTensor*, arm_compute::ICLTensor*, short const*, unsigned int, arm_compute::BorderMode, unsigned char)' cl_convolution.cpp:(.text+0x490): undefined reference to `arm_compute::CLConvolutionSquare<5u>::configure(arm_compute::ICLTensor*, arm_compute::ICLTensor*, short const*, unsigned int, arm_compute::BorderMode, unsigned char)' cl_convolution.cpp:(.text+0x49a): undefined reference to `arm_compute::CLTensor::allocator()' cl_convolution.cpp:(.text+0x4b0): undefined reference to `arm_compute::CLTensor::allocator()' cl_convolution.cpp:(.text+0x4c6): undefined reference to `arm_compute::CLTensor::allocator()' cl_convolution.cpp:(.text+0x4fc): undefined reference to `arm_compute::ICLSimpleFunction::run()' cl_convolution.cpp:(.text+0x506): undefined reference to `arm_compute::CLConvolutionSquare<5u>::run()' cl_convolution.cpp:(.text+0x50a): undefined reference to `arm_compute::CLScheduler::get()' /tmp/ccld62Yl.o: In function `cl::detail::ReferenceHandler<_cl_context*>::retain(_cl_context*)': cl_convolution.cpp:(.text._ZN2cl6detail16ReferenceHandlerIP11_cl_contextE6retainES3_[_ZN2cl6detail16ReferenceHandlerIP11_cl_contextE6retainES3_]+0xa): undefined reference to `clRetainContext' /tmp/ccld62Yl.o: In function `cl::detail::ReferenceHandler<_cl_context*>::release(_cl_context*)': cl_convolution.cpp:(.text._ZN2cl6detail16ReferenceHandlerIP11_cl_contextE7releaseES3_[_ZN2cl6detail16ReferenceHandlerIP11_cl_contextE7releaseES3_]+0xa): undefined reference to `clReleaseContext' /tmp/ccld62Yl.o: In function `cl::detail::ReferenceHandler<_cl_command_queue*>::retain(_cl_command_queue*)': cl_convolution.cpp:(.text._ZN2cl6detail16ReferenceHandlerIP17_cl_command_queueE6retainES3_[_ZN2cl6detail16ReferenceHandlerIP17_cl_command_queueE6retainES3_]+0xa): undefined reference to `clRetainCommandQueue' /tmp/ccld62Yl.o: In function `cl::detail::ReferenceHandler<_cl_command_queue*>::release(_cl_command_queue*)': cl_convolution.cpp:(.text._ZN2cl6detail16ReferenceHandlerIP17_cl_command_queueE7releaseES3_[_ZN2cl6detail16ReferenceHandlerIP17_cl_command_queueE7releaseES3_]+0xa): undefined reference to `clReleaseCommandQueue' /tmp/ccld62Yl.o: In function `cl::detail::ReferenceHandler<_cl_kernel*>::release(_cl_kernel*)': cl_convolution.cpp:(.text._ZN2cl6detail16ReferenceHandlerIP10_cl_kernelE7releaseES3_[_ZN2cl6detail16ReferenceHandlerIP10_cl_kernelE7releaseES3_]+0xa): undefined reference to `clReleaseKernel' /tmp/ccld62Yl.o: In function `cl::Platform::makeDefault()': cl_convolution.cpp:(.text._ZN2cl8Platform11makeDefaultEv[_ZN2cl8Platform11makeDefaultEv]+0x1e): undefined reference to `clGetPlatformIDs' cl_convolution.cpp:(.text._ZN2cl8Platform11makeDefaultEv[_ZN2cl8Platform11makeDefaultEv]+0x84): undefined reference to `clGetPlatformIDs' /tmp/ccld62Yl.o: In function `cl::Platform::getDevices(unsigned long long, std::vector<cl::Device, std::allocator<cl::Device> >*) const': cl_convolution.cpp:(.text._ZNK2cl8Platform10getDevicesEyPSt6vectorINS_6DeviceESaIS2_EE[_ZNK2cl8Platform10getDevicesEyPSt6vectorINS_6DeviceESaIS2_EE]+0x52): undefined reference to `clGetDeviceIDs' cl_convolution.cpp:(.text._ZNK2cl8Platform10getDevicesEyPSt6vectorINS_6DeviceESaIS2_EE[_ZNK2cl8Platform10getDevicesEyPSt6vectorINS_6DeviceESaIS2_EE]+0xb8): undefined reference to `clGetDeviceIDs' /tmp/ccld62Yl.o: In function `cl::Platform::get(std::vector<cl::Platform, std::allocator<cl::Platform> >*)': cl_convolution.cpp:(.text._ZN2cl8Platform3getEPSt6vectorIS0_SaIS0_EE[_ZN2cl8Platform3getEPSt6vectorIS0_SaIS0_EE]+0x3c): undefined reference to `clGetPlatformIDs' cl_convolution.cpp:(.text._ZN2cl8Platform3getEPSt6vectorIS0_SaIS0_EE[_ZN2cl8Platform3getEPSt6vectorIS0_SaIS0_EE]+0x96): undefined reference to `clGetPlatformIDs' /tmp/ccld62Yl.o: In function `cl::Context::Context(unsigned long long, int*, void (*)(char const*, void const*, unsigned int, void*), void*, int*)': cl_convolution.cpp:(.text._ZN2cl7ContextC2EyPiPFvPKcPKvjPvES6_S1_[_ZN2cl7ContextC5EyPiPFvPKcPKvjPvES6_S1_]+0x1b0): undefined reference to `clCreateContextFromType' /tmp/ccld62Yl.o: In function `cl::CommandQueue::CommandQueue(cl::Context const&, cl::Device const&, unsigned long long, int*)': cl_convolution.cpp:(.text._ZN2cl12CommandQueueC2ERKNS_7ContextERKNS_6DeviceEyPi[_ZN2cl12CommandQueueC5ERKNS_7ContextERKNS_6DeviceEyPi]+0x48): undefined reference to `clCreateCommandQueue' /tmp/ccld62Yl.o: In function `cl::CommandQueue::finish() const': cl_convolution.cpp:(.text._ZNK2cl12CommandQueue6finishEv[_ZNK2cl12CommandQueue6finishEv]+0xe): undefined reference to `clFinish' /tmp/ccld62Yl.o: In function `arm_compute::data_size_from_type(arm_compute::DataType)': cl_convolution.cpp:(.text._ZN11arm_compute19data_size_from_typeENS_8DataTypeE[_ZN11arm_compute19data_size_from_typeENS_8DataTypeE]+0x86): undefined reference to `arm_compute::error(char const*, char const*, int, char const*, ...)' /tmp/ccld62Yl.o: In function `arm_compute::CLScheduler::default_init(arm_compute::ICLTuner*)': cl_convolution.cpp:(.text._ZN11arm_compute11CLScheduler12default_initEPNS_8ICLTunerE[_ZN11arm_compute11CLScheduler12default_initEPNS_8ICLTunerE]+0x16): undefined reference to `arm_compute::CLKernelLibrary::get()' /tmp/ccld62Yl.o: In function `arm_compute::CLScheduler::init(cl::Context, cl::CommandQueue, cl::Device, arm_compute::ICLTuner*)': cl_convolution.cpp:(.text._ZN11arm_compute11CLScheduler4initEN2cl7ContextENS1_12CommandQueueENS1_6DeviceEPNS_8ICLTunerE[_ZN11arm_compute11CLScheduler4initEN2cl7ContextENS1_12CommandQueueENS1_6DeviceEPNS_8ICLTunerE]+0x36): undefined reference to `arm_compute::get_target_from_device(cl::Device&)' /tmp/ccld62Yl.o: In function `arm_compute::utils::map(arm_compute::CLTensor&, bool)': cl_convolution.cpp:(.text._ZN11arm_compute5utils3mapERNS_8CLTensorEb[_ZN11arm_compute5utils3mapERNS_8CLTensorEb]+0x12): undefined reference to `arm_compute::CLTensor::map(bool)' /tmp/ccld62Yl.o: In function `arm_compute::utils::unmap(arm_compute::CLTensor&)': cl_convolution.cpp:(.text._ZN11arm_compute5utils5unmapERNS_8CLTensorE[_ZN11arm_compute5utils5unmapERNS_8CLTensorE]+0xa): undefined reference to `arm_compute::CLTensor::unmap()' /tmp/ccld62Yl.o: In function `arm_compute::utils::PPMLoader::open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': cl_convolution.cpp:(.text._ZN11arm_compute5utils9PPMLoader4openERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN11arm_compute5utils9PPMLoader4openERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0xce): undefined reference to `arm_compute::error(char const*, char const*, int, char const*, ...)' /tmp/ccld62Yl.o: In function `arm_compute::ICLSimpleFunction::~ICLSimpleFunction()': cl_convolution.cpp:(.text._ZN11arm_compute17ICLSimpleFunctionD2Ev[_ZN11arm_compute17ICLSimpleFunctionD5Ev]+0x40): undefined reference to `vtable for arm_compute::ICLSimpleFunction' /tmp/ccld62Yl.o: In function `arm_compute::CLConvolution3x3::CLConvolution3x3()': cl_convolution.cpp:(.text._ZN11arm_compute16CLConvolution3x3C2Ev[_ZN11arm_compute16CLConvolution3x3C5Ev]+0xc): undefined reference to `arm_compute::ICLSimpleFunction::ICLSimpleFunction()' /tmp/ccld62Yl.o: In function `int cl::Context::getInfo<std::vector<cl::Device, std::allocator<cl::Device> > >(unsigned int, std::vector<cl::Device, std::allocator<cl::Device> >*) const': cl_convolution.cpp:(.text._ZNK2cl7Context7getInfoISt6vectorINS_6DeviceESaIS3_EEEEijPT_[_ZNK2cl7Context7getInfoISt6vectorINS_6DeviceESaIS3_EEEEijPT_]+0x12): undefined reference to `clGetContextInfo' cl_convolution.cpp:(.text._ZNK2cl7Context7getInfoISt6vectorINS_6DeviceESaIS3_EEEEijPT_[_ZNK2cl7Context7getInfoISt6vectorINS_6DeviceESaIS3_EEEEijPT_]+0x16): undefined reference to `clGetContextInfo' /tmp/ccld62Yl.o: In function `void arm_compute::utils::PPMLoader::init_image<arm_compute::CLTensor>(arm_compute::CLTensor&, arm_compute::Format)': cl_convolution.cpp:(.text._ZN11arm_compute5utils9PPMLoader10init_imageINS_8CLTensorEEEvRT_NS_6FormatE[_ZN11arm_compute5utils9PPMLoader10init_imageINS_8CLTensorEEEvRT_NS_6FormatE]+0x2c): undefined reference to `arm_compute::TensorInfo::TensorInfo(unsigned int, unsigned int, arm_compute::Format)' cl_convolution.cpp:(.text._ZN11arm_compute5utils9PPMLoader10init_imageINS_8CLTensorEEEvRT_NS_6FormatE[_ZN11arm_compute5utils9PPMLoader10init_imageINS_8CLTensorEEEvRT_NS_6FormatE]+0x32): undefined reference to `arm_compute::CLTensor::allocator()' cl_convolution.cpp:(.text._ZN11arm_compute5utils9PPMLoader10init_imageINS_8CLTensorEEEvRT_NS_6FormatE[_ZN11arm_compute5utils9PPMLoader10init_imageINS_8CLTensorEEEvRT_NS_6FormatE]+0x40): undefined reference to `arm_compute::ITensorAllocator::init(arm_compute::TensorInfo const&)' /tmp/ccld62Yl.o: In function `void arm_compute::utils::PPMLoader::fill_image<arm_compute::CLTensor>(arm_compute::CLTensor&)': cl_convolution.cpp:(.text._ZN11arm_compute5utils9PPMLoader10fill_imageINS_8CLTensorEEEvRT_[_ZN11arm_compute5utils9PPMLoader10fill_imageINS_8CLTensorEEEvRT_]+0x29e): undefined reference to `arm_compute::error(char const*, char const*, int, char const*, ...)' cl_convolution.cpp:(.text._ZN11arm_compute5utils9PPMLoader10fill_imageINS_8CLTensorEEEvRT_[_ZN11arm_compute5utils9PPMLoader10fill_imageINS_8CLTensorEEEvRT_]+0x2ee): undefined reference to `arm_compute::error(char const*, char const*, int, char const*, ...)' /tmp/ccld62Yl.o: In function `void arm_compute::utils::save_to_ppm<arm_compute::CLTensor>(arm_compute::CLTensor&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': cl_convolution.cpp:(.text._ZN11arm_compute5utils11save_to_ppmINS_8CLTensorEEEvRT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN11arm_compute5utils11save_to_ppmINS_8CLTensorEEEvRT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x3c6): undefined reference to `arm_compute::error(char const*, char const*, int, char const*, ...)' cl_convolution.cpp:(.text._ZN11arm_compute5utils11save_to_ppmINS_8CLTensorEEEvRT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN11arm_compute5utils11save_to_ppmINS_8CLTensorEEEvRT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x44a): undefined reference to `arm_compute::error(char const*, char const*, int, char const*, ...)' /tmp/ccld62Yl.o: In function `arm_compute::IKernel::~IKernel()': cl_convolution.cpp:(.text._ZN11arm_compute7IKernelD2Ev[_ZN11arm_compute7IKernelD5Ev]+0x24): undefined reference to `vtable for arm_compute::IKernel' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute19CLConvolutionSquareILj5EEE[_ZTVN11arm_compute19CLConvolutionSquareILj5EEE]+0x8): undefined reference to `arm_compute::CLConvolutionSquare<5u>::run()' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute19CLConvolutionKernelILj5EEE[_ZTVN11arm_compute19CLConvolutionKernelILj5EEE]+0x10): undefined reference to `arm_compute::IKernel::is_parallelisable() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute19CLConvolutionKernelILj5EEE[_ZTVN11arm_compute19CLConvolutionKernelILj5EEE]+0x14): undefined reference to `arm_compute::CLConvolutionKernel<5u>::border_size() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute19CLConvolutionKernelILj5EEE[_ZTVN11arm_compute19CLConvolutionKernelILj5EEE]+0x18): undefined reference to `arm_compute::ICLSimple2DKernel::run(arm_compute::Window const&, cl::CommandQueue&)' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute32CLSeparableConvolutionVertKernelILj5EEE[_ZTVN11arm_compute32CLSeparableConvolutionVertKernelILj5EEE]+0x10): undefined reference to `arm_compute::IKernel::is_parallelisable() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute32CLSeparableConvolutionVertKernelILj5EEE[_ZTVN11arm_compute32CLSeparableConvolutionVertKernelILj5EEE]+0x14): undefined reference to `arm_compute::CLSeparableConvolutionVertKernel<5u>::border_size() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute32CLSeparableConvolutionVertKernelILj5EEE[_ZTVN11arm_compute32CLSeparableConvolutionVertKernelILj5EEE]+0x18): undefined reference to `arm_compute::ICLSimple2DKernel::run(arm_compute::Window const&, cl::CommandQueue&)' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute31CLSeparableConvolutionHorKernelILj5EEE[_ZTVN11arm_compute31CLSeparableConvolutionHorKernelILj5EEE]+0x10): undefined reference to `arm_compute::IKernel::is_parallelisable() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute31CLSeparableConvolutionHorKernelILj5EEE[_ZTVN11arm_compute31CLSeparableConvolutionHorKernelILj5EEE]+0x14): undefined reference to `arm_compute::CLSeparableConvolutionHorKernel<5u>::border_size() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute31CLSeparableConvolutionHorKernelILj5EEE[_ZTVN11arm_compute31CLSeparableConvolutionHorKernelILj5EEE]+0x18): undefined reference to `arm_compute::ICLSimple2DKernel::run(arm_compute::Window const&, cl::CommandQueue&)' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute16CLConvolution3x3E[_ZTVN11arm_compute16CLConvolution3x3E]+0x8): undefined reference to `arm_compute::ICLSimpleFunction::run()' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute15ICLSimpleKernelE[_ZTVN11arm_compute15ICLSimpleKernelE]+0x10): undefined reference to `arm_compute::IKernel::is_parallelisable() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute15ICLSimpleKernelE[_ZTVN11arm_compute15ICLSimpleKernelE]+0x14): undefined reference to `arm_compute::IKernel::border_size() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute9ICLKernelE[_ZTVN11arm_compute9ICLKernelE]+0x10): undefined reference to `arm_compute::IKernel::is_parallelisable() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute9ICLKernelE[_ZTVN11arm_compute9ICLKernelE]+0x14): undefined reference to `arm_compute::IKernel::border_size() const' /tmp/ccld62Yl.o:(.rodata._ZTIN11arm_compute19CLConvolutionKernelILj5EEE[_ZTIN11arm_compute19CLConvolutionKernelILj5EEE]+0x8): undefined reference to `typeinfo for arm_compute::ICLSimple2DKernel' /tmp/ccld62Yl.o:(.rodata._ZTIN11arm_compute32CLSeparableConvolutionVertKernelILj5EEE[_ZTIN11arm_compute32CLSeparableConvolutionVertKernelILj5EEE]+0x8): undefined reference to `typeinfo for arm_compute::ICLSimple2DKernel' /tmp/ccld62Yl.o:(.rodata._ZTIN11arm_compute31CLSeparableConvolutionHorKernelILj5EEE[_ZTIN11arm_compute31CLSeparableConvolutionHorKernelILj5EEE]+0x8): undefined reference to `typeinfo for arm_compute::ICLSimple2DKernel' /tmp/ccld62Yl.o:(.rodata._ZTIN11arm_compute16CLConvolution3x3E[_ZTIN11arm_compute16CLConvolution3x3E]+0x8): undefined reference to `typeinfo for arm_compute::ICLSimpleFunction' /tmp/ccld62Yl.o:(.rodata._ZTIN11arm_compute9ICLKernelE[_ZTIN11arm_compute9ICLKernelE]+0x8): undefined reference to `typeinfo for arm_compute::IKernel' /tmp/ccld62Yl.o: In function `arm_compute::ICLTensor::~ICLTensor()': cl_convolution.cpp:(.text._ZN11arm_compute9ICLTensorD2Ev[_ZN11arm_compute9ICLTensorD5Ev]+0x2c): undefined reference to `vtable for arm_compute::ICLTensor' /tmp/ccld62Yl.o: In function `arm_compute::CLTensor::~CLTensor()': cl_convolution.cpp:(.text._ZN11arm_compute8CLTensorD2Ev[_ZN11arm_compute8CLTensorD5Ev]+0x14): undefined reference to `arm_compute::CLTensorAllocator::~CLTensorAllocator()' cl_convolution.cpp:(.text._ZN11arm_compute8CLTensorD2Ev[_ZN11arm_compute8CLTensorD5Ev]+0x38): undefined reference to `vtable for arm_compute::CLTensor' /tmp/ccld62Yl.o: In function `arm_compute::TensorInfo::~TensorInfo()': cl_convolution.cpp:(.text._ZN11arm_compute10TensorInfoD2Ev[_ZN11arm_compute10TensorInfoD5Ev]+0x2c): undefined reference to `vtable for arm_compute::TensorInfo' /tmp/ccld62Yl.o: In function `arm_compute::CLFillBorderKernel::~CLFillBorderKernel()': cl_convolution.cpp:(.text._ZN11arm_compute18CLFillBorderKernelD2Ev[_ZN11arm_compute18CLFillBorderKernelD5Ev]+0x2c): undefined reference to `vtable for arm_compute::CLFillBorderKernel' /tmp/ccld62Yl.o: In function `arm_compute::ICLSimple2DKernel::~ICLSimple2DKernel()': cl_convolution.cpp:(.text._ZN11arm_compute17ICLSimple2DKernelD2Ev[_ZN11arm_compute17ICLSimple2DKernelD5Ev]+0x2c): undefined reference to `vtable for arm_compute::ICLSimple2DKernel' collect2: error: ld returned 1 exit status
Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/5/lto-wrapper Target: arm-linux-gnueabihf Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-armhf/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-armhf --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-armhf --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --disable-werror --enable-multilib --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf Thread model: posix gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) COLLECT_GCC_OPTIONS='-v' '-I' '.' '-I' 'include' '-std=c++11' '-Llibarm_compute' '-Larm_compute_core' '-LOpenCL' '-o' 'cl_convolution' '-D' 'ARM_COMPUTE_CL' '-shared-libgcc' '-march=armv7-a' '-mfloat-abi=hard' '-mfpu=vfpv3-d16' '-mthumb' '-mtls-dialect=gnu' /usr/lib/gcc/arm-linux-gnueabihf/5/cc1plus -quiet -v -I . -I include -imultiarch arm-linux-gnueabihf -D_GNU_SOURCE -D ARM_COMPUTE_CL examples/cl_convolution.cpp -quiet -dumpbase cl_convolution.cpp -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 -mthumb -mtls-dialect=gnu -auxbase cl_convolution -std=c++11 -version -fstack-protector-strong -Wformat -Wformat-security -o /tmp/cci1PXds.s GNU C++11 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) version 5.4.0 20160609 (arm-linux-gnueabihf) compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring duplicate directory "/usr/include/arm-linux-gnueabihf/c++/5" ignoring nonexistent directory "/usr/local/include/arm-linux-gnueabihf" ignoring nonexistent directory "/usr/lib/gcc/arm-linux-gnueabihf/5/../../../../arm-linux-gnueabihf/include" #include "..." search starts here: #include <...> search starts here: . include /usr/include/c++/5 /usr/include/arm-linux-gnueabihf/c++/5 /usr/include/c++/5/backward /usr/lib/gcc/arm-linux-gnueabihf/5/include /usr/local/include /usr/lib/gcc/arm-linux-gnueabihf/5/include-fixed /usr/include/arm-linux-gnueabihf /usr/include End of search list. GNU C++11 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) version 5.4.0 20160609 (arm-linux-gnueabihf) compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 12831138f3a67787c6ffebe33a0c39c6 COLLECT_GCC_OPTIONS='-v' '-I' '.' '-I' 'include' '-std=c++11' '-Llibarm_compute' '-Larm_compute_core' '-LOpenCL' '-o' 'cl_convolution' '-D' 'ARM_COMPUTE_CL' '-shared-libgcc' '-march=armv7-a' '-mfloat-abi=hard' '-mfpu=vfpv3-d16' '-mthumb' '-mtls-dialect=gnu' as -v -I . -I include -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 -meabi=5 -o /tmp/ccld62Yl.o /tmp/cci1PXds.s GNU assembler version 2.26.1 (arm-linux-gnueabihf) using BFD version (GNU Binutils for Ubuntu) 2.26.1 COLLECT_GCC_OPTIONS='-v' '-I' '.' '-I' 'include' '-std=c++11' '-Llibarm_compute' '-Larm_compute_core' '-LOpenCL' '-o' 'cl_convolution' '-D' 'ARM_COMPUTE_CL' '-shared-libgcc' '-march=armv7-a' '-mfloat-abi=hard' '-mfpu=vfpv3-d16' '-mthumb' '-mtls-dialect=gnu' /usr/lib/gcc/arm-linux-gnueabihf/5/cc1plus -quiet -v -I . -I include -imultiarch arm-linux-gnueabihf -D_GNU_SOURCE -D ARM_COMPUTE_CL utils/Utils.cpp -quiet -dumpbase Utils.cpp -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 -mthumb -mtls-dialect=gnu -auxbase Utils -std=c++11 -version -fstack-protector-strong -Wformat -Wformat-security -o /tmp/cci1PXds.s GNU C++11 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) version 5.4.0 20160609 (arm-linux-gnueabihf) compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring duplicate directory "/usr/include/arm-linux-gnueabihf/c++/5" ignoring nonexistent directory "/usr/local/include/arm-linux-gnueabihf" ignoring nonexistent directory "/usr/lib/gcc/arm-linux-gnueabihf/5/../../../../arm-linux-gnueabihf/include" #include "..." search starts here: #include <...> search starts here: . include /usr/include/c++/5 /usr/include/arm-linux-gnueabihf/c++/5 /usr/include/c++/5/backward /usr/lib/gcc/arm-linux-gnueabihf/5/include /usr/local/include /usr/lib/gcc/arm-linux-gnueabihf/5/include-fixed /usr/include/arm-linux-gnueabihf /usr/include End of search list. GNU C++11 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) version 5.4.0 20160609 (arm-linux-gnueabihf) compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 12831138f3a67787c6ffebe33a0c39c6 COLLECT_GCC_OPTIONS='-v' '-I' '.' '-I' 'include' '-std=c++11' '-Llibarm_compute' '-Larm_compute_core' '-LOpenCL' '-o' 'cl_convolution' '-D' 'ARM_COMPUTE_CL' '-shared-libgcc' '-march=armv7-a' '-mfloat-abi=hard' '-mfpu=vfpv3-d16' '-mthumb' '-mtls-dialect=gnu' as -v -I . -I include -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 -meabi=5 -o /tmp/ccRJh6NL.o /tmp/cci1PXds.s GNU assembler version 2.26.1 (arm-linux-gnueabihf) using BFD version (GNU Binutils for Ubuntu) 2.26.1 COMPILER_PATH=/usr/lib/gcc/arm-linux-gnueabihf/5/:/usr/lib/gcc/arm-linux-gnueabihf/5/:/usr/lib/gcc/arm-linux-gnueabihf/:/usr/lib/gcc/arm-linux-gnueabihf/5/:/usr/lib/gcc/arm-linux-gnueabihf/ LIBRARY_PATH=/usr/lib/gcc/arm-linux-gnueabihf/5/:/usr/lib/gcc/arm-linux-gnueabihf/5/../../../arm-linux-gnueabihf/:/usr/lib/gcc/arm-linux-gnueabihf/5/../../../../lib/:/lib/arm-linux-gnueabihf/:/lib/../lib/:/usr/lib/arm-linux-gnueabihf/:/usr/lib/../lib/:/usr/lib/gcc/arm-linux-gnueabihf/5/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-v' '-I' '.' '-I' 'include' '-std=c++11' '-Llibarm_compute' '-Larm_compute_core' '-LOpenCL' '-o' 'cl_convolution' '-D' 'ARM_COMPUTE_CL' '-shared-libgcc' '-march=armv7-a' '-mfloat-abi=hard' '-mfpu=vfpv3-d16' '-mthumb' '-mtls-dialect=gnu' /usr/lib/gcc/arm-linux-gnueabihf/5/collect2 -plugin /usr/lib/gcc/arm-linux-gnueabihf/5/liblto_plugin.so -plugin-opt=/usr/lib/gcc/arm-linux-gnueabihf/5/lto-wrapper -plugin-opt=-fresolution=/tmp/ccYDiY0Q.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --sysroot=/ --build-id --eh-frame-hdr -dynamic-linker /lib/ld-linux-armhf.so.3 -X --hash-style=gnu --as-needed -m armelf_linux_eabi -z relro -o cl_convolution /usr/lib/gcc/arm-linux-gnueabihf/5/../../../arm-linux-gnueabihf/crt1.o /usr/lib/gcc/arm-linux-gnueabihf/5/../../../arm-linux-gnueabihf/crti.o /usr/lib/gcc/arm-linux-gnueabihf/5/crtbegin.o -Llibarm_compute -Larm_compute_core -LOpenCL -L/usr/lib/gcc/arm-linux-gnueabihf/5 -L/usr/lib/gcc/arm-linux-gnueabihf/5/../../../arm-linux-gnueabihf -L/usr/lib/gcc/arm-linux-gnueabihf/5/../../../../lib -L/lib/arm-linux-gnueabihf -L/lib/../lib -L/usr/lib/arm-linux-gnueabihf -L/usr/lib/../lib -L/usr/lib/gcc/arm-linux-gnueabihf/5/../../.. /tmp/ccld62Yl.o /tmp/ccRJh6NL.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/arm-linux-gnueabihf/5/crtend.o /usr/lib/gcc/arm-linux-gnueabihf/5/../../../arm-linux-gnueabihf/crtn.o /tmp/ccld62Yl.o: In function `main_cl_convolution(int, char const**)': cl_convolution.cpp:(.text+0x22e): undefined reference to `arm_compute::CLTensor::CLTensor()' cl_convolution.cpp:(.text+0x238): undefined reference to `arm_compute::CLTensor::CLTensor()' cl_convolution.cpp:(.text+0x242): undefined reference to `arm_compute::CLTensor::CLTensor()' cl_convolution.cpp:(.text+0x246): undefined reference to `arm_compute::CLScheduler::get()' cl_convolution.cpp:(.text+0x272): undefined reference to `clGetDeviceInfo' cl_convolution.cpp:(.text+0x2d2): undefined reference to `clGetDeviceInfo' cl_convolution.cpp:(.text+0x356): undefined reference to `arm_compute::CLTensor::allocator()' cl_convolution.cpp:(.text+0x36a): undefined reference to `arm_compute::TensorInfo::TensorInfo(unsigned int, unsigned int, arm_compute::Format)' cl_convolution.cpp:(.text+0x376): undefined reference to `arm_compute::ITensorAllocator::init(arm_compute::TensorInfo const&)' cl_convolution.cpp:(.text+0x3e2): undefined reference to `arm_compute::CLTensor::allocator()' cl_convolution.cpp:(.text+0x3ee): undefined reference to `arm_compute::CLTensor::info()' cl_convolution.cpp:(.text+0x3f8): undefined reference to `arm_compute::ITensorAllocator::init(arm_compute::TensorInfo const&)' cl_convolution.cpp:(.text+0x402): undefined reference to `arm_compute::CLTensor::allocator()' cl_convolution.cpp:(.text+0x40e): undefined reference to `arm_compute::CLTensor::info()' cl_convolution.cpp:(.text+0x418): undefined reference to `arm_compute::ITensorAllocator::init(arm_compute::TensorInfo const&)' cl_convolution.cpp:(.text+0x43e): undefined reference to `arm_compute::CLConvolutionSquare<5u>::CLConvolutionSquare(std::shared_ptr<arm_compute::IMemoryManager>)' cl_convolution.cpp:(.text+0x46c): undefined reference to `arm_compute::CLConvolution3x3::configure(arm_compute::ICLTensor*, arm_compute::ICLTensor*, short const*, unsigned int, arm_compute::BorderMode, unsigned char)' cl_convolution.cpp:(.text+0x490): undefined reference to `arm_compute::CLConvolutionSquare<5u>::configure(arm_compute::ICLTensor*, arm_compute::ICLTensor*, short const*, unsigned int, arm_compute::BorderMode, unsigned char)' cl_convolution.cpp:(.text+0x49a): undefined reference to `arm_compute::CLTensor::allocator()' cl_convolution.cpp:(.text+0x4b0): undefined reference to `arm_compute::CLTensor::allocator()' cl_convolution.cpp:(.text+0x4c6): undefined reference to `arm_compute::CLTensor::allocator()' cl_convolution.cpp:(.text+0x4fc): undefined reference to `arm_compute::ICLSimpleFunction::run()' cl_convolution.cpp:(.text+0x506): undefined reference to `arm_compute::CLConvolutionSquare<5u>::run()' cl_convolution.cpp:(.text+0x50a): undefined reference to `arm_compute::CLScheduler::get()' /tmp/ccld62Yl.o: In function `cl::detail::ReferenceHandler<_cl_context*>::retain(_cl_context*)': cl_convolution.cpp:(.text._ZN2cl6detail16ReferenceHandlerIP11_cl_contextE6retainES3_[_ZN2cl6detail16ReferenceHandlerIP11_cl_contextE6retainES3_]+0xa): undefined reference to `clRetainContext' /tmp/ccld62Yl.o: In function `cl::detail::ReferenceHandler<_cl_context*>::release(_cl_context*)': cl_convolution.cpp:(.text._ZN2cl6detail16ReferenceHandlerIP11_cl_contextE7releaseES3_[_ZN2cl6detail16ReferenceHandlerIP11_cl_contextE7releaseES3_]+0xa): undefined reference to `clReleaseContext' /tmp/ccld62Yl.o: In function `cl::detail::ReferenceHandler<_cl_command_queue*>::retain(_cl_command_queue*)': cl_convolution.cpp:(.text._ZN2cl6detail16ReferenceHandlerIP17_cl_command_queueE6retainES3_[_ZN2cl6detail16ReferenceHandlerIP17_cl_command_queueE6retainES3_]+0xa): undefined reference to `clRetainCommandQueue' /tmp/ccld62Yl.o: In function `cl::detail::ReferenceHandler<_cl_command_queue*>::release(_cl_command_queue*)': cl_convolution.cpp:(.text._ZN2cl6detail16ReferenceHandlerIP17_cl_command_queueE7releaseES3_[_ZN2cl6detail16ReferenceHandlerIP17_cl_command_queueE7releaseES3_]+0xa): undefined reference to `clReleaseCommandQueue' /tmp/ccld62Yl.o: In function `cl::detail::ReferenceHandler<_cl_kernel*>::release(_cl_kernel*)': cl_convolution.cpp:(.text._ZN2cl6detail16ReferenceHandlerIP10_cl_kernelE7releaseES3_[_ZN2cl6detail16ReferenceHandlerIP10_cl_kernelE7releaseES3_]+0xa): undefined reference to `clReleaseKernel' /tmp/ccld62Yl.o: In function `cl::Platform::makeDefault()': cl_convolution.cpp:(.text._ZN2cl8Platform11makeDefaultEv[_ZN2cl8Platform11makeDefaultEv]+0x1e): undefined reference to `clGetPlatformIDs' cl_convolution.cpp:(.text._ZN2cl8Platform11makeDefaultEv[_ZN2cl8Platform11makeDefaultEv]+0x84): undefined reference to `clGetPlatformIDs' /tmp/ccld62Yl.o: In function `cl::Platform::getDevices(unsigned long long, std::vector<cl::Device, std::allocator<cl::Device> >*) const': cl_convolution.cpp:(.text._ZNK2cl8Platform10getDevicesEyPSt6vectorINS_6DeviceESaIS2_EE[_ZNK2cl8Platform10getDevicesEyPSt6vectorINS_6DeviceESaIS2_EE]+0x52): undefined reference to `clGetDeviceIDs' cl_convolution.cpp:(.text._ZNK2cl8Platform10getDevicesEyPSt6vectorINS_6DeviceESaIS2_EE[_ZNK2cl8Platform10getDevicesEyPSt6vectorINS_6DeviceESaIS2_EE]+0xb8): undefined reference to `clGetDeviceIDs' /tmp/ccld62Yl.o: In function `cl::Platform::get(std::vector<cl::Platform, std::allocator<cl::Platform> >*)': cl_convolution.cpp:(.text._ZN2cl8Platform3getEPSt6vectorIS0_SaIS0_EE[_ZN2cl8Platform3getEPSt6vectorIS0_SaIS0_EE]+0x3c): undefined reference to `clGetPlatformIDs' cl_convolution.cpp:(.text._ZN2cl8Platform3getEPSt6vectorIS0_SaIS0_EE[_ZN2cl8Platform3getEPSt6vectorIS0_SaIS0_EE]+0x96): undefined reference to `clGetPlatformIDs' /tmp/ccld62Yl.o: In function `cl::Context::Context(unsigned long long, int*, void (*)(char const*, void const*, unsigned int, void*), void*, int*)': cl_convolution.cpp:(.text._ZN2cl7ContextC2EyPiPFvPKcPKvjPvES6_S1_[_ZN2cl7ContextC5EyPiPFvPKcPKvjPvES6_S1_]+0x1b0): undefined reference to `clCreateContextFromType' /tmp/ccld62Yl.o: In function `cl::CommandQueue::CommandQueue(cl::Context const&, cl::Device const&, unsigned long long, int*)': cl_convolution.cpp:(.text._ZN2cl12CommandQueueC2ERKNS_7ContextERKNS_6DeviceEyPi[_ZN2cl12CommandQueueC5ERKNS_7ContextERKNS_6DeviceEyPi]+0x48): undefined reference to `clCreateCommandQueue' /tmp/ccld62Yl.o: In function `cl::CommandQueue::finish() const': cl_convolution.cpp:(.text._ZNK2cl12CommandQueue6finishEv[_ZNK2cl12CommandQueue6finishEv]+0xe): undefined reference to `clFinish' /tmp/ccld62Yl.o: In function `arm_compute::data_size_from_type(arm_compute::DataType)': cl_convolution.cpp:(.text._ZN11arm_compute19data_size_from_typeENS_8DataTypeE[_ZN11arm_compute19data_size_from_typeENS_8DataTypeE]+0x86): undefined reference to `arm_compute::error(char const*, char const*, int, char const*, ...)' /tmp/ccld62Yl.o: In function `arm_compute::CLScheduler::default_init(arm_compute::ICLTuner*)': cl_convolution.cpp:(.text._ZN11arm_compute11CLScheduler12default_initEPNS_8ICLTunerE[_ZN11arm_compute11CLScheduler12default_initEPNS_8ICLTunerE]+0x16): undefined reference to `arm_compute::CLKernelLibrary::get()' /tmp/ccld62Yl.o: In function `arm_compute::CLScheduler::init(cl::Context, cl::CommandQueue, cl::Device, arm_compute::ICLTuner*)': cl_convolution.cpp:(.text._ZN11arm_compute11CLScheduler4initEN2cl7ContextENS1_12CommandQueueENS1_6DeviceEPNS_8ICLTunerE[_ZN11arm_compute11CLScheduler4initEN2cl7ContextENS1_12CommandQueueENS1_6DeviceEPNS_8ICLTunerE]+0x36): undefined reference to `arm_compute::get_target_from_device(cl::Device&)' /tmp/ccld62Yl.o: In function `arm_compute::utils::map(arm_compute::CLTensor&, bool)': cl_convolution.cpp:(.text._ZN11arm_compute5utils3mapERNS_8CLTensorEb[_ZN11arm_compute5utils3mapERNS_8CLTensorEb]+0x12): undefined reference to `arm_compute::CLTensor::map(bool)' /tmp/ccld62Yl.o: In function `arm_compute::utils::unmap(arm_compute::CLTensor&)': cl_convolution.cpp:(.text._ZN11arm_compute5utils5unmapERNS_8CLTensorE[_ZN11arm_compute5utils5unmapERNS_8CLTensorE]+0xa): undefined reference to `arm_compute::CLTensor::unmap()' /tmp/ccld62Yl.o: In function `arm_compute::utils::PPMLoader::open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': cl_convolution.cpp:(.text._ZN11arm_compute5utils9PPMLoader4openERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN11arm_compute5utils9PPMLoader4openERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0xce): undefined reference to `arm_compute::error(char const*, char const*, int, char const*, ...)' /tmp/ccld62Yl.o: In function `arm_compute::ICLSimpleFunction::~ICLSimpleFunction()': cl_convolution.cpp:(.text._ZN11arm_compute17ICLSimpleFunctionD2Ev[_ZN11arm_compute17ICLSimpleFunctionD5Ev]+0x40): undefined reference to `vtable for arm_compute::ICLSimpleFunction' /tmp/ccld62Yl.o: In function `arm_compute::CLConvolution3x3::CLConvolution3x3()': cl_convolution.cpp:(.text._ZN11arm_compute16CLConvolution3x3C2Ev[_ZN11arm_compute16CLConvolution3x3C5Ev]+0xc): undefined reference to `arm_compute::ICLSimpleFunction::ICLSimpleFunction()' /tmp/ccld62Yl.o: In function `int cl::Context::getInfo<std::vector<cl::Device, std::allocator<cl::Device> > >(unsigned int, std::vector<cl::Device, std::allocator<cl::Device> >*) const': cl_convolution.cpp:(.text._ZNK2cl7Context7getInfoISt6vectorINS_6DeviceESaIS3_EEEEijPT_[_ZNK2cl7Context7getInfoISt6vectorINS_6DeviceESaIS3_EEEEijPT_]+0x12): undefined reference to `clGetContextInfo' cl_convolution.cpp:(.text._ZNK2cl7Context7getInfoISt6vectorINS_6DeviceESaIS3_EEEEijPT_[_ZNK2cl7Context7getInfoISt6vectorINS_6DeviceESaIS3_EEEEijPT_]+0x16): undefined reference to `clGetContextInfo' /tmp/ccld62Yl.o: In function `void arm_compute::utils::PPMLoader::init_image<arm_compute::CLTensor>(arm_compute::CLTensor&, arm_compute::Format)': cl_convolution.cpp:(.text._ZN11arm_compute5utils9PPMLoader10init_imageINS_8CLTensorEEEvRT_NS_6FormatE[_ZN11arm_compute5utils9PPMLoader10init_imageINS_8CLTensorEEEvRT_NS_6FormatE]+0x2c): undefined reference to `arm_compute::TensorInfo::TensorInfo(unsigned int, unsigned int, arm_compute::Format)' cl_convolution.cpp:(.text._ZN11arm_compute5utils9PPMLoader10init_imageINS_8CLTensorEEEvRT_NS_6FormatE[_ZN11arm_compute5utils9PPMLoader10init_imageINS_8CLTensorEEEvRT_NS_6FormatE]+0x32): undefined reference to `arm_compute::CLTensor::allocator()' cl_convolution.cpp:(.text._ZN11arm_compute5utils9PPMLoader10init_imageINS_8CLTensorEEEvRT_NS_6FormatE[_ZN11arm_compute5utils9PPMLoader10init_imageINS_8CLTensorEEEvRT_NS_6FormatE]+0x40): undefined reference to `arm_compute::ITensorAllocator::init(arm_compute::TensorInfo const&)' /tmp/ccld62Yl.o: In function `void arm_compute::utils::PPMLoader::fill_image<arm_compute::CLTensor>(arm_compute::CLTensor&)': cl_convolution.cpp:(.text._ZN11arm_compute5utils9PPMLoader10fill_imageINS_8CLTensorEEEvRT_[_ZN11arm_compute5utils9PPMLoader10fill_imageINS_8CLTensorEEEvRT_]+0x29e): undefined reference to `arm_compute::error(char const*, char const*, int, char const*, ...)' cl_convolution.cpp:(.text._ZN11arm_compute5utils9PPMLoader10fill_imageINS_8CLTensorEEEvRT_[_ZN11arm_compute5utils9PPMLoader10fill_imageINS_8CLTensorEEEvRT_]+0x2ee): undefined reference to `arm_compute::error(char const*, char const*, int, char const*, ...)' /tmp/ccld62Yl.o: In function `void arm_compute::utils::save_to_ppm<arm_compute::CLTensor>(arm_compute::CLTensor&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': cl_convolution.cpp:(.text._ZN11arm_compute5utils11save_to_ppmINS_8CLTensorEEEvRT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN11arm_compute5utils11save_to_ppmINS_8CLTensorEEEvRT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x3c6): undefined reference to `arm_compute::error(char const*, char const*, int, char const*, ...)' cl_convolution.cpp:(.text._ZN11arm_compute5utils11save_to_ppmINS_8CLTensorEEEvRT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN11arm_compute5utils11save_to_ppmINS_8CLTensorEEEvRT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x44a): undefined reference to `arm_compute::error(char const*, char const*, int, char const*, ...)' /tmp/ccld62Yl.o: In function `arm_compute::IKernel::~IKernel()': cl_convolution.cpp:(.text._ZN11arm_compute7IKernelD2Ev[_ZN11arm_compute7IKernelD5Ev]+0x24): undefined reference to `vtable for arm_compute::IKernel' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute19CLConvolutionSquareILj5EEE[_ZTVN11arm_compute19CLConvolutionSquareILj5EEE]+0x8): undefined reference to `arm_compute::CLConvolutionSquare<5u>::run()' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute19CLConvolutionKernelILj5EEE[_ZTVN11arm_compute19CLConvolutionKernelILj5EEE]+0x10): undefined reference to `arm_compute::IKernel::is_parallelisable() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute19CLConvolutionKernelILj5EEE[_ZTVN11arm_compute19CLConvolutionKernelILj5EEE]+0x14): undefined reference to `arm_compute::CLConvolutionKernel<5u>::border_size() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute19CLConvolutionKernelILj5EEE[_ZTVN11arm_compute19CLConvolutionKernelILj5EEE]+0x18): undefined reference to `arm_compute::ICLSimple2DKernel::run(arm_compute::Window const&, cl::CommandQueue&)' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute32CLSeparableConvolutionVertKernelILj5EEE[_ZTVN11arm_compute32CLSeparableConvolutionVertKernelILj5EEE]+0x10): undefined reference to `arm_compute::IKernel::is_parallelisable() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute32CLSeparableConvolutionVertKernelILj5EEE[_ZTVN11arm_compute32CLSeparableConvolutionVertKernelILj5EEE]+0x14): undefined reference to `arm_compute::CLSeparableConvolutionVertKernel<5u>::border_size() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute32CLSeparableConvolutionVertKernelILj5EEE[_ZTVN11arm_compute32CLSeparableConvolutionVertKernelILj5EEE]+0x18): undefined reference to `arm_compute::ICLSimple2DKernel::run(arm_compute::Window const&, cl::CommandQueue&)' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute31CLSeparableConvolutionHorKernelILj5EEE[_ZTVN11arm_compute31CLSeparableConvolutionHorKernelILj5EEE]+0x10): undefined reference to `arm_compute::IKernel::is_parallelisable() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute31CLSeparableConvolutionHorKernelILj5EEE[_ZTVN11arm_compute31CLSeparableConvolutionHorKernelILj5EEE]+0x14): undefined reference to `arm_compute::CLSeparableConvolutionHorKernel<5u>::border_size() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute31CLSeparableConvolutionHorKernelILj5EEE[_ZTVN11arm_compute31CLSeparableConvolutionHorKernelILj5EEE]+0x18): undefined reference to `arm_compute::ICLSimple2DKernel::run(arm_compute::Window const&, cl::CommandQueue&)' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute16CLConvolution3x3E[_ZTVN11arm_compute16CLConvolution3x3E]+0x8): undefined reference to `arm_compute::ICLSimpleFunction::run()' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute15ICLSimpleKernelE[_ZTVN11arm_compute15ICLSimpleKernelE]+0x10): undefined reference to `arm_compute::IKernel::is_parallelisable() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute15ICLSimpleKernelE[_ZTVN11arm_compute15ICLSimpleKernelE]+0x14): undefined reference to `arm_compute::IKernel::border_size() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute9ICLKernelE[_ZTVN11arm_compute9ICLKernelE]+0x10): undefined reference to `arm_compute::IKernel::is_parallelisable() const' /tmp/ccld62Yl.o:(.rodata._ZTVN11arm_compute9ICLKernelE[_ZTVN11arm_compute9ICLKernelE]+0x14): undefined reference to `arm_compute::IKernel::border_size() const' /tmp/ccld62Yl.o:(.rodata._ZTIN11arm_compute19CLConvolutionKernelILj5EEE[_ZTIN11arm_compute19CLConvolutionKernelILj5EEE]+0x8): undefined reference to `typeinfo for arm_compute::ICLSimple2DKernel' /tmp/ccld62Yl.o:(.rodata._ZTIN11arm_compute32CLSeparableConvolutionVertKernelILj5EEE[_ZTIN11arm_compute32CLSeparableConvolutionVertKernelILj5EEE]+0x8): undefined reference to `typeinfo for arm_compute::ICLSimple2DKernel' /tmp/ccld62Yl.o:(.rodata._ZTIN11arm_compute31CLSeparableConvolutionHorKernelILj5EEE[_ZTIN11arm_compute31CLSeparableConvolutionHorKernelILj5EEE]+0x8): undefined reference to `typeinfo for arm_compute::ICLSimple2DKernel' /tmp/ccld62Yl.o:(.rodata._ZTIN11arm_compute16CLConvolution3x3E[_ZTIN11arm_compute16CLConvolution3x3E]+0x8): undefined reference to `typeinfo for arm_compute::ICLSimpleFunction' /tmp/ccld62Yl.o:(.rodata._ZTIN11arm_compute9ICLKernelE[_ZTIN11arm_compute9ICLKernelE]+0x8): undefined reference to `typeinfo for arm_compute::IKernel' /tmp/ccld62Yl.o: In function `arm_compute::ICLTensor::~ICLTensor()': cl_convolution.cpp:(.text._ZN11arm_compute9ICLTensorD2Ev[_ZN11arm_compute9ICLTensorD5Ev]+0x2c): undefined reference to `vtable for arm_compute::ICLTensor' /tmp/ccld62Yl.o: In function `arm_compute::CLTensor::~CLTensor()': cl_convolution.cpp:(.text._ZN11arm_compute8CLTensorD2Ev[_ZN11arm_compute8CLTensorD5Ev]+0x14): undefined reference to `arm_compute::CLTensorAllocator::~CLTensorAllocator()' cl_convolution.cpp:(.text._ZN11arm_compute8CLTensorD2Ev[_ZN11arm_compute8CLTensorD5Ev]+0x38): undefined reference to `vtable for arm_compute::CLTensor' /tmp/ccld62Yl.o: In function `arm_compute::TensorInfo::~TensorInfo()': cl_convolution.cpp:(.text._ZN11arm_compute10TensorInfoD2Ev[_ZN11arm_compute10TensorInfoD5Ev]+0x2c): undefined reference to `vtable for arm_compute::TensorInfo' /tmp/ccld62Yl.o: In function `arm_compute::CLFillBorderKernel::~CLFillBorderKernel()': cl_convolution.cpp:(.text._ZN11arm_compute18CLFillBorderKernelD2Ev[_ZN11arm_compute18CLFillBorderKernelD5Ev]+0x2c): undefined reference to `vtable for arm_compute::CLFillBorderKernel' /tmp/ccld62Yl.o: In function `arm_compute::ICLSimple2DKernel::~ICLSimple2DKernel()': cl_convolution.cpp:(.text._ZN11arm_compute17ICLSimple2DKernelD2Ev[_ZN11arm_compute17ICLSimple2DKernelD5Ev]+0x2c): undefined reference to `vtable for arm_compute::ICLSimple2DKernel' collect2: error: ld returned 1 exit status
Hi,
I posted an article that may help you a bit.. It does demonstrate how to modify an application to add your own code. In my case the added code is for Streamline annotation, but the scons changes are attached to the end of the article.
https://community.arm.com/tools/b/blog/posts/profiling-alexnet-on-raspberry-pi-and-hikey-960-with-the-compute-library