Skip to content

OpenCV compilation - libpng reference error

Hi,

As part of the project requirement using OpenCV, was trying to create a runtime application for plcnext.

Got stuck at the executable creation with the libopencv_imgcodecs.so reference to libpng library. I tried adding the liblibpng.a and it's dependency libzlib.a which were created as part of the 3rd party library. Looks like it is not working.

Should I independently create the libpng.so for the program to compile? any ideas

Below the error,

cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.Services.OpcUAServer.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.Services.TraceController.so && :
/opt/pxc/sdk/AXCF2152/2019.6/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-pxc-linux-gnueabi/gcc/arm-pxc-linux-gnueabi/8.2.0/real-ld: /usr/local/lib/libopencv_imgcodecs.so: undefined reference to `png_riffle_palette_neon'
/opt/pxc/sdk/AXCF2152/2019.6/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-pxc-linux-gnueabi/gcc/arm-pxc-linux-gnueabi/8.2.0/real-ld: /usr/local/lib/libopencv_imgcodecs.so: undefined reference to `png_do_expand_palette_rgb8_neon'
/opt/pxc/sdk/AXCF2152/2019.6/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-pxc-linux-gnueabi/gcc/arm-pxc-linux-gnueabi/8.2.0/real-ld: /usr/local/lib/libopencv_imgcodecs.so: undefined reference to `png_init_filter_functions_neon'
/opt/pxc/sdk/AXCF2152/2019.6/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-pxc-linux-gnueabi/gcc/arm-pxc-linux-gnueabi/8.2.0/real-ld: /usr/local/lib/libopencv_imgcodecs.so: undefined reference to `png_do_expand_palette_rgba8_neon'
collect2: error: ld returned 1 exit status

 

Logs in detail:

 

umesh@umesh-VirtualBox:~/eclipse-workspace/OpenCVProjectExe/tools$ sudo ./build-OpenCVProjectExe.sh -t "/opt/pxc/sdk/AXCF2152/2019.6" -a "2019.6.3 (19.6.3.22423 )" -n "AXCF2152"
[sudo] password for umesh:
Version:19.6.3.22423
CMAKE Configure
-- Setting ARP_TOOLCHAIN_NATIVE_SYSROOT='/opt/pxc/sdk/AXCF2152/2019.6/sysroots/x86_64-pokysdk-linux'
-- Setting ARP_TOOLCHAIN_TARGET_SYSROOT='/opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi'
-- The C compiler identification is GNU 8.2.0
-- The CXX compiler identification is GNU 8.2.0
-- Check for working C compiler: /opt/pxc/sdk/AXCF2152/2019.6/sysroots/x86_64-pokysdk-linux/usr/bin/arm-pxc-linux-gnueabi/arm-pxc-linux-gnueabi-gcc
-- Check for working C compiler: /opt/pxc/sdk/AXCF2152/2019.6/sysroots/x86_64-pokysdk-linux/usr/bin/arm-pxc-linux-gnueabi/arm-pxc-linux-gnueabi-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /opt/pxc/sdk/AXCF2152/2019.6/sysroots/x86_64-pokysdk-linux/usr/bin/arm-pxc-linux-gnueabi/arm-pxc-linux-gnueabi-g++
-- Check for working CXX compiler: /opt/pxc/sdk/AXCF2152/2019.6/sysroots/x86_64-pokysdk-linux/usr/bin/arm-pxc-linux-gnueabi/arm-pxc-linux-gnueabi-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
THE CMAKE_CURRENT_SOURCE_DIR: /home/umesh/eclipse-workspace/OpenCVProjectExe
CMAKE_MODULE_PATH:/opt/pxc/sdk/AXCF2152/2019.6/cmake/home/umesh/eclipse-workspace/OpenCVProjectExe/cmake
-- Found Boost: /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/include (found version "1.63.0") found components: regex
-- Found ArpProgramming: /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/include/plcnext
Inside FindOpenCV.cmake
Finding OpenCV_INCLUDE_DIR: /usr/local/include
Finding OpenCV_LIBRARY:
Found OpenCV_LIBRARY: /usr/local/lib/libopencv_core.so
-- Found OpenCV: /usr/local/include
Found OpenCV_LIBRARY: /usr/local/lib/libopencv_core.so
Found OpenCV_LIBRARY:
Found OpenCV_INCLUDE_DIR: /usr/local/include
target_link_libraries - OpenCV_LIBRARY ; LIBIMGCODECS; LIBIMGPROC : /usr/local/lib/libopencv_core.so
/usr/local/lib/libopencv_imgcodecs.so /usr/local/lib/libopencv_imgproc.so /usr/local/lib/libopencv_video.so /usr/local/lib/libopencv_videoio.so /usr/local/lib/libopencv_photo.so /usr/local/lib/libopencv_objdetect.so
/opt/pxc/install/lib/libswscale.so /opt/pxc/install/lib/libswresample.so /opt/pxc/install/lib/libavutil.so /opt/pxc/install/lib/libavformat.so /opt/pxc/install/lib/libavcodec.so /usr/local/lib/libopencv_calib3d.so /usr/local/lib/libopencv_features2d.so /usr/local/lib/libopencv_flann.so /usr/local/lib/libopencv_dnn.so
/usr/local/lib/libopencv_gapi.so /usr/local/lib/liblibpng.a /usr/local/lib/libzlib.a
-- Configuring done
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:

BUILD_TESTING
USE_ARP_DEVICE

 

-- Build files have been written to: /home/umesh/eclipse-workspace/OpenCVProjectExe/cmake/AXCF2152_19.6.3.22423
[1/1] Linking CXX executable OpenCVProjectExe
FAILED: OpenCVProjectExe
: && /opt/pxc/sdk/AXCF2152/2019.6/sysroots/x86_64-pokysdk-linux/usr/bin/arm-pxc-linux-gnueabi/arm-pxc-linux-gnueabi-g++ --sysroot=/opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi -march=armv7-a -mthumb -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 -O3 -DNDEBUG -march=armv7-a -mthumb -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 -Wl,--no-undefined CMakeFiles/OpenCVProjectExe.dir/src/MyProgram.cpp.o -o OpenCVProjectExe -Wl,-rpath,/usr/local/lib:/opt/pxc/install/lib: /usr/local/lib/libopencv_core.so /usr/local/lib/libopencv_imgproc.so /usr/local/lib/libopencv_video.so /usr/local/lib/libopencv_videoio.so /usr/local/lib/libopencv_photo.so /usr/local/lib/libopencv_objdetect.so /opt/pxc/install/lib/libswscale.so /opt/pxc/install/lib/libswresample.so /opt/pxc/install/lib/libavutil.so /opt/pxc/install/lib/libavformat.so /opt/pxc/install/lib/libavcodec.so /usr/local/lib/libopencv_calib3d.so /usr/local/lib/libopencv_features2d.so /usr/local/lib/libopencv_flann.so /usr/local/lib/libopencv_dnn.so /usr/local/lib/libopencv_gapi.so /usr/local/lib/libopencv_imgcodecs.so /usr/local/lib/liblibpng.a /usr/local/lib/libzlib.a /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.System.Acf.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.System.Commons.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.System.Core.a /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.Plc.Commons.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libboost_regex-mt.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.System.Rsc.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libpthread.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libcppformat.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.System.Rsc.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libpthread.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libcppformat.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.System.Nm.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.System.NmPayload.a /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.System.Security.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.System.Security.Services.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.System.Um.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.System.Ve.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.Plc.Domain.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.Plc.Gds.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.Plc.Meta.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.Device.Interface.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.Io.Axioline.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.Io.Interbus.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.Io.ProfinetStack.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.Services.NotificationLogger.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.Services.OpcUAServer.so /opt/pxc/sdk/AXCF2152/2019.6/sysroots/cortexa9t2hf-neon-pxc-linux-gnueabi/usr/lib/libArp.Services.TraceController.so && :
/opt/pxc/sdk/AXCF2152/2019.6/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-pxc-linux-gnueabi/gcc/arm-pxc-linux-gnueabi/8.2.0/real-ld: /usr/local/lib/libopencv_imgcodecs.so: undefined reference to `png_riffle_palette_neon'
/opt/pxc/sdk/AXCF2152/2019.6/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-pxc-linux-gnueabi/gcc/arm-pxc-linux-gnueabi/8.2.0/real-ld: /usr/local/lib/libopencv_imgcodecs.so: undefined reference to `png_do_expand_palette_rgb8_neon'
/opt/pxc/sdk/AXCF2152/2019.6/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-pxc-linux-gnueabi/gcc/arm-pxc-linux-gnueabi/8.2.0/real-ld: /usr/local/lib/libopencv_imgcodecs.so: undefined reference to `png_init_filter_functions_neon'
/opt/pxc/sdk/AXCF2152/2019.6/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-pxc-linux-gnueabi/gcc/arm-pxc-linux-gnueabi/8.2.0/real-ld: /usr/local/lib/libopencv_imgcodecs.so: undefined reference to `png_do_expand_palette_rgba8_neon'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
Error: could not load cache

 

Regards,

Umesh

Comments

  • Hi Umesh,

    The CMakeLists.txt file for the libpng library includes the following check:

    # set definitions and sources for arm
    if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR
    :

    ... and only if "true" will these source files be included in the build:

    set(libpng_arm_sources
    arm/arm_init.c
    arm/filter_neon.S
    arm/filter_neon_intrinsics.c
    arm/palette_neon_intrinsics.c)

    These source files contain the functions you are missing, and it turns out that the AXC F 2152 toolchain sets CMAKE_SYSTEM_PROCESSOR to cortexa9t2hf-neon-pxc-linux-gnueabi.

    So you will need to modify the CMakeLists.txt file for the libpng library in order to get around this issue.

    Hope this helps.

    ~ Martin.

     

Sign In or Register to comment.