protobuf/lib: pread failed: is a directory, cross-compilation, deploy client application to Android phone



  • Hello, I try to run a client application on an Android phone. I use Qt 5.8 for Android on Centos 6 x86-64, qwt 6.3.1 and protobuf 2.5.0.
    I cross-compiled protobuf for arm-linux-androideabi.
    Configure step:

    sudo ./configure --prefix=/media/qt5-qwt6/android_sdk/protobuf_android --target=arm-linux-androideabi --enable-cross-compile --with-protoc=protoc --with-sysroot=/media/qt5-qwt6/android_sdk/Sdk/ndk-bundle/sysroot 
    

    I use compiler Android GCC(arm-4.9). But at step make, I get the Error:

    /media/qt5-qwt6/android_sdk/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: fatal error: /media/qt5-qwt6/android_sdk/protobuf_android/lib: pread failed: Is a directory
    collect2: error: ld returned 1 exit status
    make: *** [../build/Linux/release/libsozius-client.so] Error 1
    16:24:24: The process "/usr/bin/make" exited with code 2.
    Error while building/deploying project sozius-client (kit: Android for armeabi-v7a (GCC 4.9, Qt 5.8.0))
    When executing step "Make"
    16:24:24: Elapsed time: 00:05.
    

    /protobuf_android/lib includes static and shared libraries:

    libprotobuf.a libprotobuf-lite.so.8.0.0 libprotoc.so
    libprotobuf.la libprotobuf.so libprotoc.so.8
    libprotobuf-lite.a libprotobuf.so.8 libprotoc.so.8.0.0
    libprotobuf-lite.la libprotobuf.so.8.0.0 pkgconfig
    libprotobuf-lite.so libprotoc.a
    libprotobuf-lite.so.8 libprotoc.la

    my .pri file looks the following:

    
    android {
    message(Building for ANDROID - $$_DATE_)
    
    #ID's
    _BUILD_ID = $$system($$PWD/../scripts/source_id_linux.sh client_source)
    _PROTOC_ID = $$system($$PWD/../scripts/source_id_linux.sh proto)
    
    equals(_BUILD_ID, "") {
        error("BUILD_ID not set, check source_id scripts")
    }
    equals(_PROTOC_ID, "") {
        error("PROTOC_ID not set, check source_id scripts")
    }
    
    DEFINES += "BUILD_ID=\\\"$$_BUILD_ID"\\\"
    DEFINES += "PROTOC_ID=\\\"$$_PROTOC_ID\\\""
    
    #Qwt support
    include("/media/qt5-qwt6/qwt_android/qwt_installed-6.1.3/features/qwt.prf")
    
    #Adding Avahi/Bonjour support
    #!mac:x11:LIBS += -ldns_sd
    
    #qwt support
    LIBS += -L /media/qt5-qwt6/qwt_android/qwt-6.1.3/lib -lqwt
    INCLUDEPATH += /media/qt5-qwt6/qwt_android/qwt_installed-6.1.3/include
    
    #Bonjour/Avahi support
    LIBS += -ldns_sd
    
    #Protobuf support
    LIBS += -L /media/qt5-qwt6/android_sdk/protobuf_android/lib -lprotobuf
    INCLUDEPATH += /media/qt5-qwt6/android_sdk/protobuf_android/include
    
    #Clean Files (use: make distclean)
    QMAKE_DISTCLEAN += -r $$DESTDIR
    
    }
    

    I have already tried to call libprotobuf.so in the path but that leads to -ldns_sd, -lprotobuf and -lqwt not being detected. I am grateful for any help to overcome this error.


  • Moderators

    @a_so Remove blank between -L and the path to the library:

    LIBS += -L/media/qt5-qwt6/qwt_android/qwt-6.1.3/lib -lqwt
    # and here
    LIBS += -L/media/qt5-qwt6/android_sdk/protobuf_android/lib -lprotobuf
    


  • Hi jsulm!

    I have removed the blanks, but now -ldns_sd and -lprotobuf are not found. This is my compile output.

    /media/qt5-qwt6/android_sdk/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: warning: skipping incompatible /home/staff/Qt5.8.0/5.8/android_armv7/lib/libqwt.so while searching for qwt
    /media/qt5-qwt6/android_sdk/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot find -ldns_sd
    /media/qt5-qwt6/android_sdk/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: warning: skipping incompatible /media/qt5-qwt6/android_sdk/protobuf_android/lib/libprotobuf.so while searching for protobuf
    /media/qt5-qwt6/android_sdk/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lprotobuf
    


  • It looks like your libraries at /media/qt5-qwt6/ are not compatible with the targetted platform. Is it possible you're trying to mix x86 and x64 builds?


  • Moderators

    @a_so What is the exact name of the protobuf library?
    Is it really located in /media/qt5-qwt6/android_sdk/protobuf_android/lib ?


  • Moderators

    @a_so To add to @JohanSolo : you can find out for which architecture the lib was build calling:

    file /media/qt5-qwt6/android_sdk/protobuf_android/lib/libprotobuf.so
    


  • @jsulm used library is libprotobuf.so.8.0.0 which indeed is under the specified directory.
    I built it for arm-linux-androideabi on my Centos virtual machine following this script

    link text

    My phone uses Android Marshmallow
    Chipset Qualcomm MSM8992 Snapdragon 808
    CPU Hexa-core (4x1.4 GHz Cortex-A53 & 2x1.8 GHz Cortex-A57)

    I am quite new to Qt and this is my first project I try to build for Android.


  • Moderators

    @a_so Can you please execute

    file /media/qt5-qwt6/android_sdk/protobuf_android/lib/libprotobuf.so
    

    and post its output here?



  • output is:

    /media/qt5-qwt6/android_sdk/protobuf_android/lib/libprotobuf.so: symbolic link to `libprotobuf.so.8.0.0'
    

  • Moderators

    @a_so OK, then do:

    file /media/qt5-qwt6/android_sdk/protobuf_android/lib/libprotobuf.so.8.0.0
    

    and post the output here...



  • /media/qt5-qwt6/android_sdk/protobuf_android/lib/libprotobuf.so.8.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=ebd5a270582d8e3188c77f4027be7df7058f5f1d, not stripped
    
    

    for qwt I get the following output:

    /media/qt5-qwt6/qwt_android/qwt-6.1.3/lib/libqwt.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
    
    

  • Moderators

    @a_so As you can see it is x86_64 binary, not ARM...



  • @jsulm yes, I see. My cross compilation for arm did not work obviously. I will try to compile it again.



  • I have managed to cross compile protobuf 2.5.0 for arm-linux-androideabi with this script:

    #!/bin/bash
    export NDK=/media/qt5-qwt6/ndk10/android-ndk-r10e
    export SYSROOT=$NDK/platforms/android-21/arch-arm
    
    export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
    
    export PATH=$PATH:$TOOLCHAIN/bin
    
    export CC="$TOOLCHAIN/bin/arm-linux-androideabi-gcc --sysroot $SYSROOT"
    export CXX="$TOOLCHAIN/bin/arm-linux-androideabi-g++ --sysroot $SYSROOT"
    export CXXSTL=$NDK/sources/cxx-stl/gnu-libstdc++/4.9
    
    function build_one
    {
    mkdir build
    
    ./configure --prefix=$(pwd)/build \
    --host=arm-linux-androideabi \
    --with-sysroot=$SYSROOT \
    --enable-static \
    --disable-shared \
    --enable-cross-compile \
    --with-protoc=protoc \
    CFLAGS="-march=armv7-a" \
    CXXFLAGS="-march=armv7-a -I$CXXSTL/include -I$CXXSTL/libs/armeabi-v7a/include -L$CXXSTL/libs/armeabi-v7a/ -lgnustl_static"
    
    make clean
    make
    make install
    }
    
    # pwd is current directory
    CPU=arm
    PREFIX=$(pwd)/android/$CPU
    ADDI_CFLAGS="-marm"
    build_one
    
    # Inspect the library architecture specific information
    # arm-linux-androideabi-readelf -A build/lib/libprotobuf-lite.a
    

    find for protoc delivers:

    /home/staff/Desktop/protobuf/protobuf-2.5.0/build/bin/protoc: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
    

    next step, I linked to the libraries in my Qt project in .pri file:

    #Protobuf support (arm compiled)
    LIBS += -L/home/staff/Desktop/protobuf/protobuf-2.5.0/build/lib -lprotobuf
    INCLUDEPATH += /home/staff/Desktop/protobuf/protobuf-2.5.0/build/include
    
    #qwt support (armv7)
    LIBS += -L/media/qt5-qwt6/lib -lqwt
    INCLUDEPATH += /media/qt5-qwt6/include
    
    #Bonjour/Avahi support
    LIBS += -L/usr/lib64/libdns_sd.so.1.0.0
    
    #Protobuf support (arm compiled)
    LIBS += -L/home/staff/Desktop/protobuf/protobuf-2.5.0/build/lib -lprotobuf
    INCLUDEPATH += /home/staff/Desktop/protobuf/protobuf-2.5.0/build/include
    
    

    When I try to run the project on my phone, protobuf is found but I get the following errors:

    /media/qt5-qwt6/ndk10/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: warning: skipping incompatible /home/staff/Qt5.8.0/5.8/android_armv7/lib/libqwt.so while searching for qwt
    /media/qt5-qwt6/ndk10/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: warning: skipping incompatible /media/qt5-qwt6/lib/libqwt.so while searching for qwt
    /media/qt5-qwt6/ndk10/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lqwt
    /media/qt5-qwt6/ndk10/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: cannot find -ldns_sd
    ../sozius-client/so_bonjourservicebrowser.cpp:57: error: undefined reference to 'DNSServiceRefDeallocate'
    ../sozius-client/so_bonjourservicebrowser.cpp:92: error: undefined reference to 'DNSServiceBrowse'
    ../sozius-client/so_bonjourservicebrowser.cpp:103: error: undefined reference to 'DNSServiceRefSockFD'
    ../sozius-client/so_bonjourservicebrowser.cpp:138: error: undefined reference to 'DNSServiceProcessResult'
    ../sozius-client/so_bonjourserviceresolver.cpp:79: error: undefined reference to 'DNSServiceRefDeallocate'
    ../sozius-client/so_bonjourserviceresolver.cpp:121: error: undefined reference to 'DNSServiceResolve'
    ../sozius-client/so_bonjourserviceresolver.cpp:132: error: undefined reference to 'DNSServiceRefSockFD'
    ../sozius-client/so_bonjourserviceresolver.cpp:169: error: undefined reference to 'DNSServiceProcessResult'
    ../sozius-client/so_bonjourservicereconfirmer.cpp:46: error: undefined reference to 'DNSServiceQueryRecord'
    ../sozius-client/so_bonjourservicereconfirmer.cpp:57: error: undefined reference to 'DNSServiceRefSockFD'
    ../sozius-client/so_bonjourservicereconfirmer.cpp:104: error: undefined reference to 'DNSServiceProcessResult'
    ../sozius-client/so_bonjourservicereconfirmer.cpp:122: error: undefined reference to 'DNSServiceConstructFullName'
    ../sozius-client/so_bonjourservicereconfirmer.cpp:140: error: undefined reference to 'DNSServiceRefDeallocate'
    ../sozius-client/so_bonjourservicereconfirmer.cpp:161: error: undefined reference to 'DNSServiceReconfirmRecord'
    ../sozius-client/so_bonjourservicequeryrecord.cpp:84: error: undefined reference to 'DNSServiceQueryRecord'
    ../sozius-client/so_bonjourservicequeryrecord.cpp:99: error: undefined reference to 'DNSServiceRefSockFD'
    ../sozius-client/so_bonjourservicequeryrecord.cpp:133: error: undefined reference to 'DNSServiceProcessResult'
    ../sozius-client/so_bonjourservicequeryrecord.cpp:145: error: undefined reference to 'DNSServiceRefDeallocate'
    ../sozius-client/so_bonjourservice.cpp:43: error: undefined reference to 'TXTRecordGetCount'
    ../sozius-client/so_bonjourservice.cpp:47: error: undefined reference to 'TXTRecordGetItemAtIndex'
    ../sozius-client/so_bonjourservice.cpp:229: error: undefined reference to 'DNSServiceConstructFullName'
    ../sozius-client/so_infograph_p.cpp:61: error: undefined reference to 'QwtPlot::setAxisTitle(int, QString const&)'
    ../sozius-client/so_infograph_p.cpp:99: error: undefined reference to 'QwtPlot::setFooter(QString const&)'
    ../sozius-client/so_infograph_p.cpp:135: error: undefined reference to 'QwtPlot::setAxisScale(int, double, double, double)'
    ../sozius-client/so_infograph_p.cpp:152: error: undefined reference to 'QwtPlot::setAxisAutoScale(int, bool)'
    ../sozius-client/so_infograph_p.cpp:157: error: undefined reference to 'QwtPlot::setAxisAutoScale(int, bool)'
    ../sozius-client/so_infograph_p.cpp:158: error: undefined reference to 'QwtPlot::setAxisScale(int, double, double, double)'
    ../sozius-client/so_infograph_p.cpp:177: error: undefined reference to 'QwtPlot::setFooter(QString const&)'
    ../sozius-client/so_infograph_p.cpp:178: error: undefined reference to 'QwtPlot::setCanvasBackground(QBrush const&)'
    ../sozius-client/so_infograph_p.cpp:179: error: undefined reference to 'QwtPlot::setAxisTitle(int, QString const&)'
    ../sozius-client/so_infograph_p.cpp:182: error: undefined reference to 'QwtPlot::setAxisScale(int, double, double, double)'
    ../sozius-client/so_infograph_p.cpp:183: error: undefined reference to 'QwtPlot::setAxisAutoScale(int, bool)'
    ../sozius-client/so_infograph_p.cpp:186: error: undefined reference to 'QwtPlot::setAxisScale(int, double, double, double)'
    ../sozius-client/so_infograph_p.cpp:201: error: undefined reference to 'QwtPlotCurve::QwtPlotCurve(QString const&)'
    ../sozius-client/so_infograph_p.cpp:203: error: undefined reference to 'QwtPlotCurve::setPen(QColor const&, double, Qt::PenStyle)'
    ../sozius-client/so_infograph_p.cpp:204: error: undefined reference to 'QwtPlotItem::setRenderHint(QwtPlotItem::RenderHint, bool)'
    ../sozius-client/so_infograph_p.cpp:248: error: undefined reference to 'QwtPlotCurve::setSamples(QVector<QPointF> const&)'
    ../sozius-client/so_infograph_p.cpp:249: error: undefined reference to 'QwtPlotItem::attach(QwtPlot*)'
    ../sozius-client/so_qwtplot.cpp:3: error: undefined reference to 'QwtPlot::QwtPlot(QWidget*)'
    ../build/Linux/debug/.obj/so_qwtplot.o:so_qwtplot.cpp:vtable for so_QwtPlot: error: undefined reference to 'QwtPlot::metaObject() const'
    ../build/Linux/debug/.obj/so_qwtplot.o:so_qwtplot.cpp:vtable for so_QwtPlot: error: undefined reference to 'QwtPlot::qt_metacast(char const*)'
    ../build/Linux/debug/.obj/so_qwtplot.o:so_qwtplot.cpp:vtable for so_QwtPlot: error: undefined reference to 'QwtPlot::qt_metacall(QMetaObject::Call, int, void**)'
    ../build/Linux/debug/.obj/so_qwtplot.o:so_qwtplot.cpp:vtable for so_QwtPlot: error: undefined reference to 'QwtPlot::event(QEvent*)'
    ../build/Linux/debug/.obj/so_qwtplot.o:so_qwtplot.cpp:vtable for so_QwtPlot: error: undefined reference to 'QwtPlot::eventFilter(QObject*, QEvent*)'
    ../build/Linux/debug/.obj/so_qwtplot.o:so_qwtplot.cpp:vtable for so_QwtPlot: error: undefined reference to 'QwtPlot::resizeEvent(QResizeEvent*)'
    ../build/Linux/debug/.obj/so_qwtplot.o:so_qwtplot.cpp:vtable for so_QwtPlot: error: undefined reference to 'QwtPlot::canvasMap(int) const'
    ../build/Linux/debug/.obj/so_qwtplot.o:so_qwtplot.cpp:vtable for so_QwtPlot: error: undefined reference to 'QwtPlot::updateLayout()'
    ../build/Linux/debug/.obj/so_qwtplot.o:so_qwtplot.cpp:vtable for so_QwtPlot: error: undefined reference to 'QwtPlot::drawCanvas(QPainter*)'
    ../build/Linux/debug/.obj/so_qwtplot.o:so_qwtplot.cpp:vtable for so_QwtPlot: error: undefined reference to 'QwtPlot::getCanvasMarginsHint(QwtScaleMap const*, QRectF const&, double&, double&, double&, double&) const'
    ../build/Linux/debug/.obj/so_qwtplot.o:so_qwtplot.cpp:vtable for so_QwtPlot: error: undefined reference to 'QwtPlot::drawItems(QPainter*, QRectF const&, QwtScaleMap const*) const'
    ../build/Linux/debug/.obj/so_qwtplot.o:so_qwtplot.cpp:vtable for so_QwtPlot: error: undefined reference to 'QwtPlot::itemToInfo(QwtPlotItem*) const'
    ../build/Linux/debug/.obj/so_qwtplot.o:so_qwtplot.cpp:vtable for so_QwtPlot: error: undefined reference to 'QwtPlot::infoToItem(QVariant const&) const'
    ../build/Linux/debug/.obj/so_qwtplot.o:so_qwtplot.cpp:vtable for so_QwtPlot: error: undefined reference to 'QwtPlot::replot()'
    ../build/Linux/debug/.obj/so_qwtplot.o:so_qwtplot.cpp:typeinfo for so_QwtPlot: error: undefined reference to 'typeinfo for QwtPlot'
    ../sozius-client/so_qwtplot.h:9: error: undefined reference to 'QwtPlot::~QwtPlot()'
    /home/staff/Desktop/protobuf/protobuf-2.5.0/build/lib/libprotobuf.a(strutil.o):strutil.cc:function google::protobuf::safe_strtof(char const*, float*): error: undefined reference to 'strtof'
    collect2: error: ld returned 1 exit status
    make: *** [../build/Linux/debug/libsozius-client.so] Error 1
    12:13:04: The process "/usr/bin/make" exited with code 2.
    Error while building/deploying project sozius-client (kit: Android for armeabi-v7a (GCC 4.9, Qt 5.8.0))
    When executing step "Make"
    12:13:04: Elapsed time: 02:52.
    
    

    My questions are:

    1. what architecture/configuration does qwt need? I have several of them on my machine
    /home/staff/Qt5.8.0/5.8/android_armv7/lib/libqwt.so.6.1.2: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=131bd147d36585511f96ccd14ba1ccdd88c327cc, stripped
    
    
    /media/qt5-qwt6/lib/libqwt.so.6.1.2: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=131bd147d36585511f96ccd14ba1ccdd88c327cc, stripped
    
    
    /media/qt5-qwt6/qwt_android/qwt-6.1.3/lib/libqwt.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
    
    1. why is -ldns_sd not found? The dynamic libraries are definitely installed. Is it because they are not static libraries like the ones for protobuf?
    /usr/lib64/libdns_sd.so
    /usr/lib64/libdns_sd.so.1
    /usr/lib64/libdns_sd.so.1.0.0
    

    Thank you for your patience with me


  • Moderators

    @a_so You need ARM build of libqwt (same as protobuf) as you're going to use it on an ARM processor, right?
    Fix your pro file:

    LIBS += -L/media/qt5-qwt6/qwt_android/qwt-6.1.3/lib -lqwt
    INCLUDEPATH += /media/qt5-qwt6/qwt_android/qwt-6.1.3/include
    

    Are those directories on your host machine?

    /usr/lib64/libdns_sd.so
    /usr/lib64/libdns_sd.so.1
    /usr/lib64/libdns_sd.so.1.0.0
    

    If so, then please keep in mind that you cannot use them on your target (again: your target is ARM). You need libdns_sd.so in your sysroot. Is it there?



  • I edited the .pro file as you suggested, but I get the warning

    :-1: warning: skipping incompatible /home/staff/Qt5.8.0/5.8/android_armv7/lib/libqwt.so while searching for qwt
    

    The warning appears, yet I do not see any associated errors with qwt. I guess, this warning is implemented somewhere in the project and appears. But of course I used the paths you suggested. I should not worry too much about this warning, right?

    The directories are on my host machine on which I run my qt. What do you mean by sysroot?


  • Moderators

    @a_so Do you build for Android when this warning occurs?

    Your sysroot seems to be --with-sysroot=/media/qt5-qwt6/android_sdk/Sdk/ndk-bundle/sysroot



  • Yes. I found the problem for this. I copied the library files in there once and as the content in this path is loaded when I try to build the project, this warning gets displayed. My errors now are all linked to libdns from avahi.

    /media/qt5-qwt6/ndk10/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: cannot find -ldns_sd
    ../sozius-client/so_bonjourservicebrowser.cpp:57: error: undefined reference to 'DNSServiceRefDeallocate'
    ../sozius-client/so_bonjourservicebrowser.cpp:92: error: undefined reference to 'DNSServiceBrowse'
    ../sozius-client/so_bonjourservicebrowser.cpp:103: error: undefined reference to 'DNSServiceRefSockFD'
    ../sozius-client/so_bonjourservicebrowser.cpp:138: error: undefined reference to 'DNSServiceProcessResult'
    ../sozius-client/so_bonjourserviceresolver.cpp:79: error: undefined reference to 'DNSServiceRefDeallocate'
    ../sozius-client/so_bonjourserviceresolver.cpp:121: error: undefined reference to 'DNSServiceResolve'
    ../sozius-client/so_bonjourserviceresolver.cpp:132: error: undefined reference to 'DNSServiceRefSockFD'
    ../sozius-client/so_bonjourserviceresolver.cpp:169: error: undefined reference to 'DNSServiceProcessResult'
    ../sozius-client/so_bonjourservicereconfirmer.cpp:46: error: undefined reference to 'DNSServiceQueryRecord'
    ../sozius-client/so_bonjourservicereconfirmer.cpp:57: error: undefined reference to 'DNSServiceRefSockFD'
    ../sozius-client/so_bonjourservicereconfirmer.cpp:104: error: undefined reference to 'DNSServiceProcessResult'
    ../sozius-client/so_bonjourservicereconfirmer.cpp:122: error: undefined reference to 'DNSServiceConstructFullName'
    ../sozius-client/so_bonjourservicereconfirmer.cpp:140: error: undefined reference to 'DNSServiceRefDeallocate'
    ../sozius-client/so_bonjourservicereconfirmer.cpp:161: error: undefined reference to 'DNSServiceReconfirmRecord'
    ../sozius-client/so_bonjourservicequeryrecord.cpp:84: error: undefined reference to 'DNSServiceQueryRecord'
    ../sozius-client/so_bonjourservicequeryrecord.cpp:99: error: undefined reference to 'DNSServiceRefSockFD'
    ../sozius-client/so_bonjourservicequeryrecord.cpp:133: error: undefined reference to 'DNSServiceProcessResult'
    ../sozius-client/so_bonjourservicequeryrecord.cpp:145: error: undefined reference to 'DNSServiceRefDeallocate'
    ../sozius-client/so_bonjourservice.cpp:43: error: undefined reference to 'TXTRecordGetCount'
    ../sozius-client/so_bonjourservice.cpp:47: error: undefined reference to 'TXTRecordGetItemAtIndex'
    ../sozius-client/so_bonjourservice.cpp:229: error: undefined reference to 'DNSServiceConstructFullName'
    collect2: error: ld returned 1 exit status
    make: *** [../build/Linux/debug/libsozius-client.so] Error 1
    10:40:03: The process "/usr/bin/make" exited with code 2.
    Error while building/deploying project sozius-client (kit: Android for armeabi-v7a (GCC 4.9, Qt 5.8.0))
    When executing step "Make"
    10:40:03: Elapsed time: 00:01.
    

    My sysroot for ndk is

    export NDK=/media/qt5-qwt6/ndk10/android-ndk-r10e
    export SYSROOT=$NDK/platforms/android-21/arch-arm
    

  • Moderators

    @a_so Where is libdns_sd.so ?



  • it is in:

    /usr/lib64
    

    But this is a x86_64 version for my linux host system. I want to build my shared library libdns_sd.so for arm architecture, but was not successful as a file is missing according to the link:

    http://gaiger-programming.blogspot.co.at/2015/12/utilize-avahi-libraries-in-android-for.html

    I have already contacted avahi but have not received a reply yet.


  • Moderators

    @a_so Do you mean 0002-Add-uninstalled.pc.in-files.patch ?
    I just downloaded it clicking on it on that web site.



  • Yes. Your are right. It works. When I tried to download it some days ago I got directed to a shutdown avahi page. So I will try to generate the library files for arm. Hopefully it works. Thank you for your help!


Log in to reply