Menu

Building minidlna/ReadyMedia on Solaris 11

Help
2017-07-24
2017-07-24
  • Phil Stracchino

    Phil Stracchino - 2017-07-24

    I'm attempting to build minidnla-1.2.0 on Solaris 11.3 on a SunFire X4540 (amd64 architecture). I'm compiling with gcc-4.9.4. I have installed all required dependencies in both 32-bit and 64-bit versions. However, when I try to configure minidlna, either 32-bit or 64-bit, configure fails at:

    checking for exif_data_new_from_file in -lexif... yes
    checking for id3_file_open in -lid3tag... no
    checking for id3_file_open in -lid3tag... no
    configure: error: Could not find libid3tag

    libexif and libid3tag are right next to each other in the same directory. I have no rational idea of why this configuration test should be failing.

    Has anyone successfully built minidlna on Solaris 11.3 and have any tips for resolving this configuration failure?

     
  • Shrimpkin

    Shrimpkin - 2017-07-28

    Just some basic checks. Did it find the id3 headers? Ex:

    ./configure | grep id3
    
    checking id3tag.h usability... yes
    checking id3tag.h presence... yes
    checking for id3tag.h... yes
    checking for id3_file_open in -lid3tag... yes
    

    What's in your header (Use your include path)? Ex:

    grep id3_file_open /usr/include/id3tag.h
    
    struct id3_file *id3_file_open(char const *, enum id3_file_mode);
    

    How about your object file (Use your lib path)? Ex:

    objdump -TC /usr/lib/libid3tag.so | grep id3_file_open
    
    000000338860d290 g    DF .text  0000000000000064  Base        id3_file_open
    
     
  • Phil Stracchino

    Phil Stracchino - 2017-09-30

    Sorry for the long delay here, got busy and didn't have a chance to get back to it.

    All of the above look exactly as they should. I traced the problem to this:

    configure:9512: result: yes
    configure:9530: checking for id3_file_open in -lid3tag
    configure:9555: gcc -o conftest -march=native -mfpmath=sse -pipe -I/opt/ffmpeg/include -L/opt/ffmpeg/lib conftest.c -lid3tag >&5
    Undefined first referenced
    symbol in file
    id3_compat_lookup /usr/lib/libid3tag.so
    id3_frametype_lookup /usr/lib/libid3tag.so
    id3_frametype_obsolete /usr/lib/libid3tag.so
    id3_frametype_text /usr/lib/libid3tag.so
    id3_frametype_url /usr/lib/libid3tag.so
    id3_compat_fixup /usr/lib/libid3tag.so
    id3_frametype_experimental /usr/lib/libid3tag.so
    id3_frametype_unknown /usr/lib/libid3tag.so
    ld: fatal: symbol referencing errors
    collect2: error: ld returned 1 exit status

    I suspect the root problem here is that the Solaris 11 id3lib package is built with different options than minidlna needs. The solution was to remove the id3lib package and compile libid3tag myself.

    This page is also helpful: http://sysdef.xyz/post/2014-10-22-solaris-upnp-linn-minidlna

    However, this still only got me to this point:

    monitor.c: In function 'monitor_insert_directory':
    monitor.c:536:12: error: 'struct dirent' has no member named 'd_type'
    switch( e->d_type )
    ^
    monitor.c:538:9: error: 'DT_DIR' undeclared (first use in this function)
    case DT_DIR:
    ^
    monitor.c:538:9: note: each undeclared identifier is reported only once for each function it appears in
    monitor.c:539:9: error: 'DT_REG' undeclared (first use in this function)
    case DT_REG:
    ^
    monitor.c:540:9: error: 'DT_LNK' undeclared (first use in this function)
    case DT_LNK:
    ^
    monitor.c:541:9: error: 'DT_UNKNOWN' undeclared (first use in this function)
    case DT_UNKNOWN:
    ^

     
  • Shrimpkin

    Shrimpkin - 2017-10-06

    Sorry, I'm not familiar with Solaris. I don't think minidlna is 100% POSIX compatible.

    According to https://linux.die.net/man/3/readdir:

    The only fields in the dirent structure that are mandated by POSIX.1 are: d_name[], of unspecified size, with at most NAME_MAX characters preceding the terminating null byte; and (as an XSI extension) d_ino. The other fields are unstandardized, and not present on all systems;

    FYI, the version you are trying to build is newer than the version used (1.1.4) at sysdef.xyz. Did you follow the notes/guide on that webpage?

     

Log in to post a comment.