strukturag / libde265

Open h.265 video codec implementation.
Other
1.72k stars 459 forks source link

./configure does not find libvideogfx #188

Open ccaneke opened 6 years ago

ccaneke commented 6 years ago

Problem

I want the compilation of libde265 to also install install sherlock265 but ./configure does not find libvideogfx when compiling so it disables sherlock265.

Version of libvideogx installed

I got libvideogfx from the github remote in your link and I converted it to an rpm package using fpm.

Output showing where libvideogfx is installed

whereis libvideogfx

libvideogfx: /usr/local/lib/libvideogfx.la /usr/local/lib/libvideogfx.a /usr/local/lib/libvideogfx.so

What i've tried so far

I tried using flags such as LIBS, VIDEOGFX_CFLAG, CFLAGS with /usr/local/lib/libvideogfx.so as the argument for these flags and still ./configure fails to find them

Thoughts and additional comments

farindk commented 6 years ago

The ./configure script searches for libvideogfx using "pkg-config". When you install libvideogfx, it also installs the pkg-config configuration file. If you install to /usr/local/lib, maybe the /usr/local/lib/pkgconfig is not in your PKG_CONFIG_PATH and you may have to include this directory.

You can run pkg-config --list-all to check whether it finds the config file.

ccaneke commented 6 years ago

Thanks for answering @farindk . I already solved it by setting the environment variable for PKG_CONFIG_PATH like so export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ and now running /configure builds sherlock265 too. However there is a new problem but before getting to the problem, I wanted to confirm something first: this is the first source code I've seen that allows both ./configure and cmake for compilation. Because this is one of my first compilations, I'm not sure but does this mean that you can use only one of them to reach the make stage.

Problem 1

Now, on to the problem, after /configure when I run make I get the following error:

Making all in dec265
make[2]: Entering directory '/home/username/lib/libde265/dec265'
g++ -DHAVE_CONFIG_H -I. -I..  -I../libde265 -I..  -std=c++0x -I/usr/local/include  -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT  -g -O2 -Werror=return-type -Werror=unused-result -Werror=reorder -DDE265_LOG_ERROR -MT dec265-dec265.o -MD -MP -MF .deps/dec265-dec265.Tpo -c -o dec265-dec265.o `test -f 'dec265.cc' || echo './'`dec265.cc
In file included from /usr/local/include/libvideogfx.hh:30,
                 from dec265.cc:44:
/usr/local/include/libvideogfx/containers/array.hh:77:10: fatal error: libvideogfx/containers/array.icc: No such file or directory
 #include "libvideogfx/containers/array.icc"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [Makefile:499: dec265-dec265.o] Error 1
make[2]: Leaving directory '/home/username/lib/libde265/dec265'
make[1]: *** [Makefile:500: all-recursive] Error 1
make[1]: Leaving directory '/home/username/lib/libde265'
make: *** [Makefile:409: all] Error 2

Probem 2

The second problem is that if I run cmake instead, then make recompiles the programs successfuly without any errors, but there is no sherlock265 in the build directory. Is this normal that make doesn't build Sherlock265 when using cmake?

farindk commented 6 years ago

0) We also support CMake for building e.g. on Windows, Android, ... It is completely independent from the automake tool-chain. 1) Does /usr/local/include/libvideogfx/containers/array.icc exist? It should have been installed during make install. Maybe it got lost during your rpm build (the .icc ending is not really standard...) 2) sherlock265 is only supported in the automake tool-chain (as I think that tool is mainly for development anyways)

ccaneke commented 6 years ago
  1. Ahh right, I see so I was right in thinking Cmake and automake were seprate options
  2. No, that file doesn't exist:
    user@host containers]$ pwd
    /usr/local/include/libvideogfx/containers
    [user@fhost containers]$ ls
    array2.hh  array.hh  dynarray.hh  heap.hh  queue.hh  symmatrix.hh
  3. That explains why cmake wasn't building sherlock. What sort of development are you referring to, would sherlock265 be useful for computer vision? I thought it was just a video player.

Findings

I just ran find on the make install files which have not been converted to a .rpm package. It shows only one .icc file:

/usr/local/include/libvideogfx/utility/bitstream/bitreader.icc

This means that the rpm build is did not remove array.icc because it doesn't exist in the version I downloaded. One more thing, the libde I cloned is the frame-parallel branch. I don't know how much difference this makes, if any.

farindk commented 6 years ago

Could you please do a git pull of libvideogfx? I just fixed the installation of those headers in libvideogfx, commit 2f00d73.

ccaneke commented 6 years ago

Oh great, your commit was swift...Now its compiling.

After installing libde, how do I use it and the two video players dec265 and Sherlock265? Do I just run /usr/local/lib/libde265.so like any other binary executable?