How do i use poppler lib in Qt quick application.
-
@NIvil-Wilson said in How do i use poppler lib in Qt quick application.:
/usr/local/lib//libpoppler-qt5.so
I'm sure this is not poppler built for Android.
You have to provide proper path to the Android version using LIBS. -
@jsulm
sir,
this is my cmak_install file.could you please check it .# Install script for directory: /home/nivilwilsonp/Pictures/poppler-21.03.0 # Set the install prefix if(NOT DEFINED CMAKE_INSTALL_PREFIX) set(CMAKE_INSTALL_PREFIX "/usr/local") endif() string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") # Set the install configuration name. if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) if(BUILD_TYPE) string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") else() set(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo") endif() message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") endif() # Set the component getting installed. if(NOT CMAKE_INSTALL_COMPONENT) if(COMPONENT) message(STATUS "Install component: \"${COMPONENT}\"") set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") else() set(CMAKE_INSTALL_COMPONENT) endif() endif() # Install shared libraries without execute permission? if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) set(CMAKE_INSTALL_SO_NO_EXE "1") endif() # Is this installation the result of a crosscompile? if(NOT DEFINED CMAKE_CROSSCOMPILING) set(CMAKE_CROSSCOMPILING "TRUE") set(CMAKE_SYSTEM_NAME Android) set(CMAKE_SYSTEM_VERSION 24) # API level set(CMAKE_ANDROID_ARCH_ABI armeabi-v7a) set(CMAKE_ANDROID_NDK /home/nivilwilsonp/Android/Sdk/ndk/21.3.6528147) set(CMAKE_ANDROID_STL_TYPE gnustl_static) endif() if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) foreach(file "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libpoppler.so.108.0.0" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libpoppler.so.108" ) if(EXISTS "${file}" AND NOT IS_SYMLINK "${file}") file(RPATH_CHECK FILE "${file}" RPATH "") endif() endforeach() file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE SHARED_LIBRARY FILES "/home/nivilwilsonp/Pictures/poppler-21.03.0/build/libpoppler.so.108.0.0" "/home/nivilwilsonp/Pictures/poppler-21.03.0/build/libpoppler.so.108" ) foreach(file "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libpoppler.so.108.0.0" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libpoppler.so.108" ) if(EXISTS "${file}" AND NOT IS_SYMLINK "${file}") if(CMAKE_INSTALL_DO_STRIP) execute_process(COMMAND "/usr/bin/strip" "${file}") endif() endif() endforeach() endif() if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libpoppler.so" AND NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libpoppler.so") file(RPATH_CHECK FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libpoppler.so" RPATH "") endif() file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE SHARED_LIBRARY FILES "/home/nivilwilsonp/Pictures/poppler-21.03.0/build/libpoppler.so") if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libpoppler.so" AND NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libpoppler.so") if(CMAKE_INSTALL_DO_STRIP) execute_process(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libpoppler.so") endif() endif() endif() if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig" TYPE FILE FILES "/home/nivilwilsonp/Pictures/poppler-21.03.0/build/poppler.pc") endif() if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig" TYPE FILE FILES "/home/nivilwilsonp/Pictures/poppler-21.03.0/build/poppler-qt5.pc") endif() if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig" TYPE FILE FILES "/home/nivilwilsonp/Pictures/poppler-21.03.0/build/poppler-cpp.pc") endif() if(NOT CMAKE_INSTALL_LOCAL_ONLY) # Include the install script for each subdirectory. include("/home/nivilwilsonp/Pictures/poppler-21.03.0/build/utils/cmake_install.cmake") include("/home/nivilwilsonp/Pictures/poppler-21.03.0/build/test/cmake_install.cmake") include("/home/nivilwilsonp/Pictures/poppler-21.03.0/build/qt5/cmake_install.cmake") include("/home/nivilwilsonp/Pictures/poppler-21.03.0/build/cpp/cmake_install.cmake") endif() if(CMAKE_INSTALL_COMPONENT) set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") else() set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") endif() string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT "${CMAKE_INSTALL_MANIFEST_FILES}") file(WRITE "/home/nivilwilsonp/Pictures/poppler-21.03.0/build/${CMAKE_INSTALL_MANIFEST}" "${CMAKE_INSTALL_MANIFEST_CONTENT}")
-
Hi,
I would avoid putting a library like that built for a different architecture/OS in such a generic path. You should store in an explicit dedicated folder.
-
@NIvil-Wilson said in How do i use poppler lib in Qt quick application.:
skipping incompatible /usr/local/lib//libpoppler-qt5.so when searching for -lpoppler-qt5.
This error clearly states that /usr/local/lib//libpoppler-qt5.so is not compatible with what you are building.
Dofile /usr/local/lib//libpoppler-qt5.so
and post its output here.
-
@jsulm said in How do i use poppler lib in Qt quick application.:
file /usr/local/lib//libpoppler-qt5.so
/usr/local/lib//libpoppler-qt5.so: symbolic link to libpoppler-qt5.so.1
-
@NIvil-Wilson Then do
file /usr/local/lib//libpoppler-qt5.so.1
-
@NIvil-Wilson said in How do i use poppler lib in Qt quick application.:
@jsulm
sir,
the result for the command file /usr/local/lib//libpoppler-qt5.so.1 is
/usr/local/lib//libpoppler-qt5.so.1: symbolic link to libpoppler-qt5.so.1.27.0Check that file then.
Did you ensure that cmake is finding your cross-compiled version and not the one from your system ?
-
Did you check the architecture of your cross-compiled library ?
-
@SGaist
sir ,
the architecture of cross-compiled library is given below.readelf -h libpoppler-qt5.so.1.27.0
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: DYN (Shared object file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x334f0
Start of program headers: 64 (bytes into file)
Start of section headers: 14323992 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 11
Size of section headers: 64 (bytes)
Number of section headers: 39
Section header string table index: 38 -
@NIvil-Wilson said in How do i use poppler lib in Qt quick application.:
Machine: Advanced Micro Devices X86-64
Is your device running on a x86_64 machine ?
-
@SGaist said in How do i use poppler lib in Qt quick application.:
x86_64
uname -a
Linux nivilwilsonp-desktop 5.8.0-48-generic #54~20.04.1-Ubuntu SMP Sat Mar 20 13:40:25 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux -
Your desktop machine is.
I meant the target that runs Android. In any case, if it's ARM, libpoppler was not cross-compiled.
-
What did you do to build poppler until now ?
-
@SGaist
sir,
i used the settings given below to cross compile poppler libraryif(NOT DEFINED CMAKE_CROSSCOMPILING)
set(CMAKE_CROSSCOMPILING "TRUE")
endif()set(CMAKE_SYSTEM_NAME Android)
set(CMAKE_SYSTEM_VERSION 21) # API level
set(CMAKE_ANDROID_ARCH_ABI arm64-v8a)
set(CMAKE_ANDROID_NDK /home/nivilwilsonp/Android/Sdk/ndk/21.3.6528147)
set(CMAKE_ANDROID_STL_TYPE c++_shared)