Frequently Asked Questions
Running OpenWalnut
Q.: I have a very high CPU load directly after program start, is this normal?
A.: You most probably turned off V-Sync in your graphics driver. If it is larger than 60FPS, you need to turn on V-Sync. This is mainly due to the OpenSceneGraph which does all its stuff every frame and if rendered with 1000 FPS it consumes a lot of CPU. The NVidia driver provides the tool nvidia-settings
. Start it and click on "OpenGL Settings" and activate V-Sync ("Sync to VBlank").
Q.: When expanding the toolbar, some icons will be behind the graaphics widget and are inaccessible. What do I do?
A.: This is known behavior on MAC OSX. As a workaround you might place the toolbar vertical on the right side, not neighbored to the graphics widget.
Installing Prerequisites
Q.: There is no package libeigen3-dev in Ubuntu repositories.
A.: Add a third party repository like this: sudo add-apt-repository ppa:gaschler/rl/eigen3
, or download and extract Eigen3 archive, and let CMake know its location.
Q.: How do I remove installed Qt on Mac OSX with the python scripts located in /Developer/Tools
so I can install the macports version?
A.: Execute as root:
sudo /Developer/Tools/uninstall-qt.py
sudo /Developer/Tools/uninstall-qtsdk.py
Q.: What do I do when I get strange linker errors on MAC OSX while installing OSG and/or compiling OW?
A.: Double and triple cross check that macports has installed the right libraries for your architecture. For certain dylibs you might check this with lipo -info filename.dylib
and uname -a
gives you the architecture you are actually running.
Q.: There are modules which require the teem library but when I install teem some modules still do not compile. What am I missing?
A.: Unfortunately, some of the teem features used in OpenWalnut are not yet available in any public release. You need to install teem from the SVN repository as described by Thomas Schultz here and here. Furthermore you need to set Teem_DIR
appropriately using ccmake
.
Compiling and Linking
Q.: When compiling with clang++ I get this error:
...
[ 0%] Building CXX object core/CMakeFiles/openwalnut.dir/gui/WGUI.cpp.o
In file included from /local/home/math/repos/OpenWalnut/src/core/gui/WGUI.cpp:27:
In file included from /local/home/math/repos/OpenWalnut/src/core/gui/WGUI.h:35:
In file included from /local/home/math/repos/OpenWalnut/src/core/gui/../kernel/WModule.h:43:
In file included from /local/home/math/repos/OpenWalnut/src/core/gui/../kernel/../common/WProperties.h:28:
In file included from /local/home/math/repos/OpenWalnut/src/core/gui/../common/WPropertyGroup.h:33:
In file included from /local/home/math/repos/OpenWalnut/src/core/gui/../common/WPropertyBase.h:36:
In file included from /local/home/math/repos/OpenWalnut/src/core/gui/../common/WProperties_Fwd.h:47:
In file included from /local/home/math/repos/OpenWalnut/src/core/gui/../common/WPropertyTypes.h:38:
In file included from /local/home/math/repos/OpenWalnut/src/core/gui/../common/math/linearAlgebra/WLinearAlgebra.h:30:
In file included from /local/home/math/repos/OpenWalnut/src/core/gui/../common/math/linearAlgebra/WMatrixFixed.h:42:
In file included from /usr/include/osg/Matrixd:17:
In file included from /usr/include/osg/Object:17:
In file included from /usr/include/osg/Referenced:21:
/usr/include/OpenThreads/Atomic:244:48: error: cannot initialize a parameter of type 'void *' with an lvalue of type 'const void *const'
return __sync_bool_compare_and_swap(&_ptr, ptrOld, ptrNew);
^~~~~~
...
A.: This is a known bug from OSG with clang, see http://forum.openscenegraph.org/viewtopic.php?t=10121 for further details. Please try a newer version of OSG.
Q.: What do I do when I get those errors on Mac?
[ 1%] Building CXX object common/CMakeFiles/common.dir/WCondition.cpp.o
...
/opt/local/include/boost/date_time/gregorian/conversion.hpp: In function ‘tm boost::gregorian::to_tm(const boost::gregorian::date&)’:
/opt/local/include/boost/date_time/gregorian/conversion.hpp:44: warning: missing initializer for member ‘tm::tm_sec’
/opt/local/include/boost/date_time/gregorian/conversion.hpp:44: warning: missing initializer for member ‘tm::tm_min’
/opt/local/include/boost/date_time/gregorian/conversion.hpp:44: warning: missing initializer for member ‘tm::tm_hour’
/opt/local/include/boost/date_time/gregorian/conversion.hpp:44: warning: missing initializer for member ‘tm::tm_mday’
/opt/local/include/boost/date_time/gregorian/conversion.hpp:44: warning: missing initializer for member ‘tm::tm_mon’
/opt/local/include/boost/date_time/gregorian/conversion.hpp:44: warning: missing initializer for member ‘tm::tm_year’
/opt/local/include/boost/date_time/gregorian/conversion.hpp:44: warning: missing initializer for member ‘tm::tm_wday’
/opt/local/include/boost/date_time/gregorian/conversion.hpp:44: warning: missing initializer for member ‘tm::tm_yday’
/opt/local/include/boost/date_time/gregorian/conversion.hpp:44: warning: missing initializer for member ‘tm::tm_isdst’
/opt/local/include/boost/date_time/gregorian/conversion.hpp:44: warning: missing initializer for member ‘tm::tm_gmtoff’
/opt/local/include/boost/date_time/gregorian/conversion.hpp:44: warning: missing initializer for member ‘tm::tm_zone’
A.: Move or link Boost includes from /opt/local/include/boost
to /usr/include
by executing: sudo mv /opt/local/include/boost /usr/include
Q.: How can I fix those linker errors?:
Linking CXX shared library ../../lib/libguiqt4.dylib
ld: warning: duplicate dylib /opt/local/lib/libboost_program_options-mt.dylib
ld: warning: duplicate dylib /opt/local/lib/libboost_thread-mt.dylib
ld: warning: duplicate dylib /opt/local/lib/libboost_filesystem-mt.dylib
ld: warning: duplicate dylib /opt/local/lib/libboost_date_time-mt.dylib
ld: warning: duplicate dylib /opt/local/lib/libboost_filesystem-mt.dylib
ld: warning: duplicate dylib /opt/local/lib/libboost_date_time-mt.dylib
ld: warning: duplicate dylib /opt/local/lib/libboost_system-mt.dylib
ld: warning: duplicate dylib /opt/local/lib/libboost_signals-mt.dylib
ld: warning: duplicate dylib /opt/local/lib/libboost_regex-mt.dylib
A.: We think you can ignore those. But please double check your architecture settings within Mac Ports if you use it!
Q.: Boost not found by cmake.
A.: Set the environment variable BOOST_ROOT
before issuing cmake or ccmake
Q.: Boost correctly found, but CMake wants to link against an other boost lib file.
A.: Check if you have set the environment variable to some directory? Additionally you can set the right boost libs in ccmake
by pressing 't'
to toggle advanced mode and by entering the right libs manually.
Q.: OpenSceneGraph not found.
A.: As with Boost, you can set the OSG_DIR
environment variable to help cmake find your OpenSceneGraph.
Q.: I have linker problems with OpenGL GLU.
A.: You can add GLU in src/qt4gui/CMakeLists.txt
in the line looking similar to this: TARGET_LINK_LIBRARIES( ${BinName} ${OWCoreName} ${QT_LIBS} ${Boost_LIBRARIES} )
. Although this should not be needed as we do not use GLU, but on some Linux distributions, OpenSceneGraph seems to be linked wrong which causes other tools linking against it to require libGLU explicitly.