• Roman Storozhenko's avatar
    cpupower: fix lib default installation path · 3a5bb506
    Roman Storozhenko authored
    Invocation the tool built with the default settings fails:
    $ cpupower
    cpupower: error while loading shared libraries: libcpupower.so.1: cannot
    open shared object file: No such file or directory
    
    The issue is that Makefile puts the library to "/usr/lib64" dir for a 64
    bit machine. This is wrong. According to the "File hierarchy standard
    specification:
    https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
    https://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.pdf
    
    "/usr/lib<qual>" dirs are intended for alternative-format libraries
    (e.g., "/usr/lib32" for 32-bit libraries on a 64-bit machine (optional)).
    
    The utility is built for the current machine and doesn't handle
    'CROSS_COMPILE' and 'ARCH' env variables. It also doesn't change bit
    depth. So the result is always the same - binary for x86_64
    architecture. Therefore the library should be put in the '/usr/lib'
    dir regardless of the build options.
    This is the case for all the distros that comply with the
    'File Hierarchy Standard 3.0" by Linux Foundation. Most of the distros
    comply with it. For example, one can check this by examining the
    "/usr/lb64" dir on debian-based distros and find that it contains only
    "/usr/lib64/ld-linux-x86-64.so.2". And examine that "/usr/lib" contains
    both 32 and 64 bit code:
    find /usr/lib -name "*.so*" -type f | xargs file | grep 32-bit
    find /usr/lib -name "*.so*" -type f | xargs file | grep 64-bit
    
    Fix the issue by changing library destination dir to "/usr/lib".
    Signed-off-by: default avatarRoman Storozhenko <romeusmeister@gmail.com>
    Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
    3a5bb506
Makefile 13.1 KB