Announcement

Collapse
No announcement yet.

Help Compiling TVheadend on Arm Linux RK3288 and S805

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Help Compiling TVheadend on Arm Linux RK3288 and S805

    CC tvheadend
    /usr/bin/ld: /home/minipc/tvheadend/libav_static/build/ffmpeg/lib/libx264.a(opencl.o): undefined reference to symbol 'dlsym@@GLIBC_2.4'
    /usr/lib/arm-linux-gnueabihf/libdl.so: error adding symbols: DSO missing from command line
    collect2: error: ld returned 1 exit status
    Makefile:530: recipe for target '/home/minipc/tvheadend/build.linux/tvheadend' failed
    make: *** [/home/minipc/tvheadend/build.linux/tvheadend] Error 1


    I was hoping that someone might be able to help with this. Cant finish compiling on 2 different arm boxes and get exact same error. Been searching for hours to try to resolve.
    Prahjister ****MK808(nonB)****MK808B V5****MK808B Plus****UBOX R89**** CX919****MK808B Pro****Nexbox N9****Eny Em95****Matricon Q2****Tanix TX5 Pro****

  • #2
    From Stackoverflow

    Code:
    In general, the man page for the symbol you can't find tells you what libraries you need to link in. In your case:
    
    http://linux.die.net/man/3/dlsym
    
    Note the line:
    
    Link with -ldl.
    if [ $up.post.type = $type.two.lazy.to_use_google ] || [ $up.post.type = $type.silly_question ];
    then mv $user.contact.up.post /.trash; set response($response.type = ignore);
    $user.up.post.ignore_in_future = true; fi;

    Comment


    • #3
      I'm Linux noob can you elaborate. I did find that stack overflow. I just don't know know how to apply the response.
      Prahjister ****MK808(nonB)****MK808B V5****MK808B Plus****UBOX R89**** CX919****MK808B Pro****Nexbox N9****Eny Em95****Matricon Q2****Tanix TX5 Pro****

      Comment


      • #4
        It looks like an error on the Makefile. Can you upload it ?

        if [ $up.post.type = $type.two.lazy.to_use_google ] || [ $up.post.type = $type.silly_question ];
        then mv $user.contact.up.post /.trash; set response($response.type = ignore);
        $user.up.post.ignore_in_future = true; fi;

        Comment


        • #5
          Originally posted by abdul_pt View Post
          It looks like an error on the Makefile. Can you upload it ?
          I believe this is it
          https://github.com/tvheadend/tvheade...aster/Makefile
          Prahjister ****MK808(nonB)****MK808B V5****MK808B Plus****UBOX R89**** CX919****MK808B Pro****Nexbox N9****Eny Em95****Matricon Q2****Tanix TX5 Pro****

          Comment


          • #6
            BTW it compiles and works if I don't use ffmpeg static. Only errors when I use ffmpeg static
            Prahjister ****MK808(nonB)****MK808B V5****MK808B Plus****UBOX R89**** CX919****MK808B Pro****Nexbox N9****Eny Em95****Matricon Q2****Tanix TX5 Pro****

            Comment


            • #7
              Here are the steps i took and sources for information if someone else wants to take a stab. it builds fine with no static ffmpeg. Built on r89 with linuxium img very little testing with non transcoding version.

              ************************************************** **********************************
              Sources and info

              https://sites.google.com/site/ianwmo...ownhome/Topic6
              https://tvheadend.org/projects/tvheadend/wiki/Building
              https://tvheadend.org/issues/2128
              http://www.linuxfromscratch.org/blfs...edia/x264.html
              https://ffmpeg.org/download.html
              https://www.gnu.org/software/libiconv/#downloading
              ************************************************** **************************
              http://www.silicondust.com/support/downloads/linux/
              mkdir hd
              cd hd
              wget http://download.silicondust.com/hdho...n_20150826.tgz
              wget http://download.silicondust.com/hdho...i_20150826.tgz
              tar zxvf libhdhomerun_20150826.tgz
              tar zxvf hdhomerun_config_gui_20150826.tgz
              cd hdhomerun_config_gui/
              sudo apt-get install libgtk2.0-dev
              ./configure
              make
              sudo make install
              cd ..
              cd ..

              ************************************************** **********************************
              All packages

              sudo apt-get install build-essential git pkg-config libssl-dev bzip2 wget
              sudo apt-get install libavahi-client-dev zlib1g-dev libavcodec-dev libavutil-dev libavformat-dev libswscale-dev
              sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev \
              libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \
              libxcb-xfixes0-dev pkg-config texi2html zlib1g-dev dvb-apps liburiparser* libiconv-hook1 libiconv-hook-dev libicu-dev
              ************************************************** *********************************
              wget http://download.videolan.org/pub/vid...stable.tar.bz2
              bzip2 -dc x264-snapshot-20150908-2245-stable.tar.bz2 | tar xvf -
              cd x264-snapshot-20150908-2245-stable/
              ./configure
              make
              sudo make install
              cd ..
              ************************************************** **********************************
              wget http://ftp.gnu.org/pub/gnu/libiconv/...nv-1.14.tar.gz
              tar -zxvf libiconv-1.14.tar.gz
              cd libiconv-1.14/
              nano srclib/stdio.in.h
              ################################################## ###################################
              search for "rare"

              change

              /* It is very rare that the developer ever has full control of stdin,
              so any use of gets warrants an unconditional warning. Assume it is
              always declared, since it is required by C89. */
              _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
              #endif

              to

              /* It is very rare that the developer ever has full control of stdin,
              so any use of gets warrants an unconditional warning. Assume it is
              always declared, since it is required by C89. */
              /* holli to avoid make error
              _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
              */
              #if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
              _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
              #endif
              #endif

              ################################################## #####################################
              ./configure
              make
              sudo make install
              cd ..
              ************************************************** **********************************
              git clone https://github.com/tvheadend/tvheadend.git
              cd tvheadend
              ./configure --enable-hdhomerun_static --enable-hdhomerun_client --enable-libffmpeg_static
              make 11:20 start
              ./build.linux/tvheadend
              make install
              cd ..
              ************************************************** ***********************************
              Build this if not static
              wget http://ffmpeg.org/releases/ffmpeg-2.8.tar.bz2
              bzip2 -dc ffmpeg-2.8.tar.bz2 | tar xvf -
              cd ffmpeg-2.8
              ./configure
              make
              sudo make install
              cd ..
              ************************************************** ************************************
              ERROR

              CC tvheadend
              /usr/bin/ld: /home/minipc/tvheadend/libav_static/build/ffmpeg/lib/libx264.a(opencl.o): undefined reference to symbol 'dlsym@@GLIBC_2.4'
              /usr/lib/arm-linux-gnueabihf/libdl.so: error adding symbols: DSO missing from command line
              collect2: error: ld returned 1 exit status
              Makefile:530: recipe for target '/home/minipc/tvheadend/build.linux/tvheadend' failed
              make: *** [/home/minipc/tvheadend/build.linux/tvheadend] Error 1
              minipc@localhost:~/tvheadend$ ./configure --help
              Prahjister ****MK808(nonB)****MK808B V5****MK808B Plus****UBOX R89**** CX919****MK808B Pro****Nexbox N9****Eny Em95****Matricon Q2****Tanix TX5 Pro****

              Comment


              • #8
                Build notes and steps

                ************************************************** **********************************
                https://sites.google.com/site/ianwmo...ownhome/Topic6
                https://tvheadend.org/projects/tvheadend/wiki/Building
                https://tvheadend.org/issues/2128
                http://www.linuxfromscratch.org/blfs...edia/x264.html
                https://ffmpeg.org/download.html
                https://www.gnu.org/software/libiconv/#downloading
                ************************************************** **************************
                http://www.silicondust.com/support/downloads/linux/
                mkdir hd
                cd hd
                wget http://download.silicondust.com/hdho...n_20150826.tgz
                wget http://download.silicondust.com/hdho...i_20150826.tgz
                tar zxvf libhdhomerun_20150826.tgz
                tar zxvf hdhomerun_config_gui_20150826.tgz
                cd hdhomerun_config_gui/
                sudo apt-get install libgtk2.0-dev
                ./configure
                make
                sudo make install
                cd ..
                cd ..

                ************************************************** **********************************
                All packages

                sudo apt-get install build-essential git pkg-config libssl-dev bzip2 wget
                sudo apt-get install libavahi-client-dev zlib1g-dev libavcodec-dev libavutil-dev libavformat-dev libswscale-dev
                sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev \
                libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \
                libxcb-xfixes0-dev pkg-config texi2html zlib1g-dev dvb-apps liburiparser* libiconv-hook1 libiconv-hook-dev libicu-dev
                ************************************************** *********************************
                wget http://download.videolan.org/pub/vid...stable.tar.bz2
                bzip2 -dc x264-snapshot-20150908-2245-stable.tar.bz2 | tar xvf -
                cd x264-snapshot-20150908-2245-stable/
                ./configure
                make
                sudo make install
                cd ..
                ************************************************** **********************************
                wget http://ftp.gnu.org/pub/gnu/libiconv/...nv-1.14.tar.gz
                tar -zxvf libiconv-1.14.tar.gz
                cd libiconv-1.14/
                nano srclib/stdio.in.h
                ################################################## ###################################
                search for "rare"

                change

                /* It is very rare that the developer ever has full control of stdin,
                so any use of gets warrants an unconditional warning. Assume it is
                always declared, since it is required by C89. */
                _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
                #endif

                to

                /* It is very rare that the developer ever has full control of stdin,
                so any use of gets warrants an unconditional warning. Assume it is
                always declared, since it is required by C89. */
                /* holli to avoid make error
                _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
                */
                #if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
                _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
                #endif
                #endif
                ################################################## #####################################
                ./configure
                make
                sudo make install
                cd ..
                ************************************************** **********************************
                git clone https://github.com/tvheadend/tvheadend.git
                cd tvheadend
                ./configure --enable-hdhomerun_static --enable-hdhomerun_client --enable-libffmpeg_static
                make 11:20 start
                ./build.linux/tvheadend
                make install
                cd ..
                ************************************************** ***********************************
                Build this if not static
                wget http://ffmpeg.org/releases/ffmpeg-2.8.tar.bz2
                bzip2 -dc ffmpeg-2.8.tar.bz2 | tar xvf -
                cd ffmpeg-2.8
                ./configure
                make
                sudo make install
                cd ..
                ************************************************** ************************************
                ERROR

                CC tvheadend
                /usr/bin/ld: /home/minipc/tvheadend/libav_static/build/ffmpeg/lib/libx264.a(opencl.o): undefined reference to symbol 'dlsym@@GLIBC_2.4'
                /usr/lib/arm-linux-gnueabihf/libdl.so: error adding symbols: DSO missing from command line
                collect2: error: ld returned 1 exit status
                Makefile:530: recipe for target '/home/minipc/tvheadend/build.linux/tvheadend' failed
                make: *** [/home/minipc/tvheadend/build.linux/tvheadend] Error 1
                minipc@localhost:~/tvheadend$ ./configure --help

                Prahjister ****MK808(nonB)****MK808B V5****MK808B Plus****UBOX R89**** CX919****MK808B Pro****Nexbox N9****Eny Em95****Matricon Q2****Tanix TX5 Pro****

                Comment


                • #9
                  Are you trying cross compile for android? if yes,
                  The problem is in Makefile.ffmpeg.
                  It uses linux gcc instead the android NDK. I also tried with no success when enable libffmpeg_static.
                  Also you need to add many flags to each ./configure

                  Comment


                  • #10
                    No this is for Linux on my beelink r89. It might have enough power to transcoded to h.264
                    Prahjister ****MK808(nonB)****MK808B V5****MK808B Plus****UBOX R89**** CX919****MK808B Pro****Nexbox N9****Eny Em95****Matricon Q2****Tanix TX5 Pro****

                    Comment


                    • #11
                      There is a switch in the make file for Android. Should I give it a try?
                      Prahjister ****MK808(nonB)****MK808B V5****MK808B Plus****UBOX R89**** CX919****MK808B Pro****Nexbox N9****Eny Em95****Matricon Q2****Tanix TX5 Pro****

                      Comment


                      • #12
                        no the --enable-android is for cross compile.
                        with transcoding your cpu will be 100% because you need to encode and decode in the same time..

                        Comment


                        • #13
                          I found a post where someone is doing this on an odroid-c1 successfully. I hope someone can hash this out. I took good notes if someone with more knowledge can try.
                          Prahjister ****MK808(nonB)****MK808B V5****MK808B Plus****UBOX R89**** CX919****MK808B Pro****Nexbox N9****Eny Em95****Matricon Q2****Tanix TX5 Pro****

                          Comment


                          • #14
                            got it working

                            LDFLAGS += ${LDFLAGS_FFDIR}/libx264.a
                            to
                            LDFLAGS += ${LDFLAGS_FFDIR}/libx264.a -ldl

                            and ran

                            ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2

                            Testing to see if the r89 can transcode

                            Will post slim down directions after i clean up
                            Prahjister ****MK808(nonB)****MK808B V5****MK808B Plus****UBOX R89**** CX919****MK808B Pro****Nexbox N9****Eny Em95****Matricon Q2****Tanix TX5 Pro****

                            Comment


                            • #15
                              well i can get it to transcode on the rk3288 at low resolutions fluidly 1.5mbps skips occasionally. Next to try on MK808B plus and hope that the hardware acceleration kicks in.
                              Prahjister ****MK808(nonB)****MK808B V5****MK808B Plus****UBOX R89**** CX919****MK808B Pro****Nexbox N9****Eny Em95****Matricon Q2****Tanix TX5 Pro****

                              Comment

                              Working...
                              X