Menu

Compiling on Fedora 13 x86_64

Help
BrianD
2010-06-09
2013-04-23
  • BrianD

    BrianD - 2010-06-09

    Compiling gizmod fails with errors on Fedora 13:
    gizmod-3.5/libGizmod/CPUUsage.cpp: In constructor ‘Gizmod::CPUUsageInfo::CPUUsageInfo()’:        
    gizmod-3.5/libGizmod/CPUUsage.cpp:83: error: ‘memset’ was not declared in this scope
    and linking fails with:
    /usr/bin/ld: CMakeFiles/gizmod.dir/GizmoDaemon.o: undefined reference to symbol 'boost::system::get_system_category()'
    /usr/bin/ld: note: 'boost::system::get_system_category()' is defined in DSO /usr/lib64/libboost_system.so.1.41.0 so try adding it to the linker command line
    /usr/lib64/libboost_system.so.1.41.0: could not read symbols: Invalid operation

    Here's what I needed to do to get Gizmod working on Fedora 13, 64bit:

    Follow the first steps of the normal INSTALL process:
    tar jxvf gizmod-X.x.tar.bz2
    mkdir build
    cd build
    cmake -DCMAKE_INSTALL_PREFIX=/usr -DSYSCONF_INSTALL_DIR=/etc ../gizmod-X.x

    Running make will fail, requiring changes:

    Edit gizmod-3.5/libGizmod/CPUUsage.cpp and add:
    #include <string.h>
    after #include <boost/thread/thread.hpp> in list of includes.

    Run make, once that fails at linking edit:
    build/gizmod/CMakeFiles/gizmod.dir/link.txt
    and add -lboost_system to the long line of libraries:
    … -lboost_filesystem -lboost_thread-mt -lboost_serialization -lboost_system -lboost_python …
    Run make again.  Now it should complete without errors.

    As root, make install

    The libraries get put in the wrong place for a 64 bit setup, so as root move them to the /usr/lib64 dir:
    cd /usr/lib64
    mv /usr/lib/libGizmod.so* .

    The input devices are not accessible to users by default.  I deal with this by creating an input group, and having a udev rule that gives access to users in that group.  As root:

    groupadd input
    gpasswd -a your_user_name input

    cd /etc/udev/rules.d/
    Create a file called 99-input.rules and put in it:
    KERNEL=="event*",       NAME="input/%k", MODE="660", GROUP="input"
    KERNEL=="js*",          NAME="input/%k", MODE="664", GROUP="input"

    Reboot.

    On restart you should be able to log in, launch gizmod, and have it detect your devices.

     
  • skolnick

    skolnick - 2010-07-25

    Thanks a lot for posting this, b_daniels. I'll try to create a .SPEC file for Fedora 13 and make an RPM for gizmo.

    Regards.

     

Log in to post a comment.