GCC - luxrender binary missing

Discussion and help for Compilation problems and platform portability.

Moderators: Dade, coordinators

GCC - luxrender binary missing

Postby psychotron » Wed Aug 05, 2009 2:16 pm

trying first time to compile lux with GCC but can't get luxrender binary
don't know what's wrong, I have boost 1.35 even dev packages (added in synaptic, it halt on 25% before)
I'm on ubuntu 8.10 64

Code: Select all
[100%] Building CXX object CMakeFiles/luxrender.dir/renderer/wxviewer.o
Linking CXX executable luxrender
liblux.a(exrio.o): In function `boost::enable_if<boost::filesystem::is_basic_path<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >, bool>::type boost::filesystem::exists<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >(boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> const&)':
exrio.cpp:(.text._ZN5boost10filesystem6existsINS0_10basic_pathISsNS0_11path_traitsEEEEENS_9enable_ifINS0_13is_basic_pathIT_EEbE4typeERKS7_[boost::enable_if<boost::filesystem::is_basic_path<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >, bool>::type boost::filesystem::exists<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >(boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> const&)]+0x64): undefined reference to `boost::filesystem::detail::status_api(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int&)'
collect2: ld returned 1 exit status
make[2]: *** [luxrender] Error 1
make[1]: *** [CMakeFiles/luxrender.dir/all] Error 2
make: *** [all] Error 2
psycho@psycho-desktop:~/luxrender$
User avatar
psychotron
Developer
 
Posts: 836
Joined: Tue Jan 15, 2008 4:04 am
Location: Pleiades

Re: GCC - luxrender binary missing

Postby jensverwiebe » Wed Aug 05, 2009 2:32 pm

Hmm
I maybe wrong, but i think you should at least build with boost 1.36 cause we use asio from boost now.

The best would be to go straight to boost 1.39, cause we plan to do RC5 and release with that.

Youll find instructions to build boost for your sys in private forum for example.

I guess you toolkit is gcc

More info also here: http://www.boost.org/doc/libs/1_39_0/more/getting_started/unix-variants.html

+ tweak cmakelist as suggested.

Jens
User avatar
jensverwiebe
Developer
 
Posts: 3429
Joined: Wed Apr 02, 2008 4:34 pm

Re: GCC - luxrender binary missing

Postby psychotron » Wed Aug 05, 2009 3:28 pm

thanks, oh it's that time.. :) hard time in terminal again :|
I'll try my best
User avatar
psychotron
Developer
 
Posts: 836
Joined: Tue Jan 15, 2008 4:04 am
Location: Pleiades

Re: GCC - luxrender binary missing

Postby psychotron » Thu Aug 20, 2009 3:02 pm

bump

compiler still can't find boost 1.39 (I compile it and install it, also last cmake)
I added these lines to cmakelist.txt before FIND_PACKAGE(Boost REQUIRED)

Code: Select all
SET(Boost_DEBUG TRUE)
SET(Boost_ADDITIONAL_VERSIONS "1.39.0" "1.39")
SET(Boost_COMPILER -gcc1_39)


and I'm getting this log after invoking BOOST_ROOT=../boost_1_39_0 cmake ../lux
where is my boost 1.39 installation placed and how to point compiler to it? :oops:


Code: Select all
psycho@psycho-desktop:~/luxrender$ BOOST_ROOT=../boost_1_39_0 cmake ../luxrender/lux
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Building for target x86_64-linux-gnu
-- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so
-- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib/libX11.so
-- OpenGL include directory: /usr/include
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:347 ] Boost not in cache
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:350 ] _boost_TEST_VERSIONS = 1.39.0;1.39;1.38.0;1.38;1.37.0;1.37;1.36.1;1.36.0;1.36;1.35.1;1.35.0;1.35;1.34.1;1.34.0;1.34;1.33.1;1.33.0;1.33
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:352 ] Boost_USE_MULTITHREADED = TRUE
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:354 ] Boost_USE_STATIC_LIBS =
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:412 ] Declared as CMake or Environmental Variables:
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:414 ]   BOOST_ROOT = ../boost_1_39_0
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:416 ]   BOOST_INCLUDEDIR =
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:418 ]   BOOST_LIBRARYDIR =
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:420 ] _boost_TEST_VERSIONS = 1.39.0;1.39;1.38.0;1.38;1.37.0;1.37;1.36.1;1.36.0;1.36;1.35.1;1.35.0;1.35;1.34.1;1.34.0;1.34;1.33.1;1.33.0;1.33
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:469 ] Include debugging info:
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:471 ]   _boost_INCLUDE_SEARCH_DIRS = ../boost_1_39_0/include;../boost_1_39_0;C:/boost/include;C:/boost;/boost;/sw/local/include
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:473 ]   _boost_PATH_SUFFIXES = boost-1_39_0;boost-1_39;boost-1_38_0;boost-1_38;boost-1_37_0;boost-1_37;boost-1_36_1;boost-1_36_0;boost-1_36;boost-1_35_1;boost-1_35_0;boost-1_35;boost-1_34_1;boost-1_34_0;boost-1_34;boost-1_33_1;boost-1_33_0;boost-1_33
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:538 ] using user-specified Boost_COMPILER = -gcc1_39
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:612 ] _boost_MULTITHREADED = -mt
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:628 ] _boost_STATIC_TAG =
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:630 ] _boost_ABI_TAG = d
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:659 ] _boost_LIBRARIES_SEARCH_DIRS = ../boost_1_39_0/lib;../boost_1_39_0/stage/lib;C:/boost/lib;C:/boost;/boost/boost___/lib;/boost;/sw/local/lib
CMake Error at /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:868 (message):
  Unable to find the requested Boost libraries.

  Unable to find the Boost header files.  Please set BOOST_ROOT to the root
  directory containing Boost or BOOST_INCLUDEDIR to the directory containing
  Boost's headers.
Call Stack (most recent call first):
  CMakeLists.txt:104 (FIND_PACKAGE)


CMake Error at CMakeLists.txt:119 (MESSAGE):
  Could not find Boost


-- Configuring incomplete, errors occurred!
User avatar
psychotron
Developer
 
Posts: 836
Joined: Tue Jan 15, 2008 4:04 am
Location: Pleiades

Re: GCC - luxrender binary missing

Postby psychotron » Thu Aug 20, 2009 3:36 pm

I try to compile boost again and try both ./bjam stage and ./bjam install
boost can't be still find

also I repair SET(Boost_COMPILER -gcc1_39) to SET(Boost_COMPILER -gcc42) in cmakelist.txt

edit: oh I must do SUDO!! ./bjam install... shit happens
ok now compiler can find boost 1.39 but there is another error

Code: Select all
psycho@psycho-desktop:~/luxrender$ cmake lux
-- Building for target x86_64-linux-gnu
-- OpenGL include directory: /usr/include
.
.
.
-- [ /usr/local/share/cmake-2.6/Modules/FindBoost.cmake:788 ] Boost_FOUND = TRUE
-- Boost version: 1.39.0
-- Found the following Boost libraries:
-- Boost library directory: /usr/local/lib
-- Boost include directory: /usr/local/include/boost-1_39
-- Found ZLIB: /usr/lib/libz.so
-- Found PNG: /usr/lib/libpng.so
-- Found TIFF: /usr/lib/libtiff.so
-- Found TIFF: /usr/lib/libtiff.so
-- Found JPEG: /usr/lib/libjpeg.so
-- JPEG include directory: /usr/include
-- Found wxWidgets: TRUE
-- wxWidgets include directory: /usr/lib/wx/include/gtk2-unicode-release-2.8/usr/include/wx-2.8
-- Looking for include files CMAKE_HAVE_PTHREAD_H
-- Looking for include files CMAKE_HAVE_PTHREAD_H - found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: /home/psycho/luxrender/lux
psycho@psycho-desktop:~/luxrender$ make
make: *** No targets specified and no makefile found.  Stop.


what " No targets specified and no makefile found." does mean?

mah this is like nightmare :P
User avatar
psychotron
Developer
 
Posts: 836
Joined: Tue Jan 15, 2008 4:04 am
Location: Pleiades

Re: GCC - luxrender binary missing

Postby psychotron » Thu Aug 20, 2009 3:48 pm

OMFG it's compiling now :D
I'm on 5% now

miracle

hallelujah

edit: with every compiled % I get
Code: Select all
/usr/local/include/boost-1_39/boost/serialization/collection_traits.hpp:59:1: warning: "BOOST_NO_INTRINSIC_INT64_T" redefined
<command-line>: warning: this is the location of the previous definition

it's ok? I have intel core2quad 64bit cpu

edit2: compilation ended with error
Code: Select all
Linking CXX executable luxconsole
/usr/bin/ld: cannot find -lboost_thread-mt
collect2: ld returned 1 exit status
make[2]: *** [luxconsole] Error 1
make[1]: *** [CMakeFiles/luxconsole.dir/all] Error 2
make: *** [all] Error 2
psycho@psycho-desktop:~/luxrender$


me sad :(
User avatar
psychotron
Developer
 
Posts: 836
Joined: Tue Jan 15, 2008 4:04 am
Location: Pleiades

Re: GCC - luxrender binary missing

Postby jeanphi » Thu Aug 20, 2009 4:09 pm

Hi,

That's pretty good. All you need to do now is find the line (113 I think) defining the libraries and insert -gcc42 just before -mt in all libraries name. I'll see if I can automate this after v0.6 is out.

Jeanphi
jeanphi
Developer
 
Posts: 7943
Joined: Mon Jan 14, 2008 7:21 am

Re: GCC - luxrender binary missing

Postby psychotron » Fri Aug 21, 2009 1:49 am

jeanphi many thanks for your patience with my noobism I really appreciate it :)

I insert -gcc42 to that line, but it's a freebsd line? it's ok? my cmakelist.txt now look like this

Code: Select all
SET(Boost_ADDITIONAL_VERSIONS "1.39.0" "1.39")
SET(Boost_COMPILER -gcc42)
FIND_PACKAGE(Boost REQUIRED)
IF(Boost_FOUND)
   MESSAGE(STATUS "Boost library directory: " ${Boost_LIBRARY_DIRS})
   MESSAGE(STATUS "Boost include directory: " ${Boost_INCLUDE_DIRS})
   IF(CYGWIN)
      SET(Boost_LIBRARIES boost_thread-gcc-mt boost_program_options-gcc-mt boost_filesystem-gcc-mt boost_serialization-gcc-mt boost_iostreams-gcc-mt boost_regex-gcc-mt)
   ELSEIF(APPLE)
      SET(Boost_LIBRARIES boost_system-xgcc40-mt-1_39 boost_thread-xgcc40-mt-1_39 boost_program_options-xgcc40-mt-1_39 boost_filesystem-xgcc40-mt-1_39 boost_serialization-xgcc40-mt-1_39 boost_iostreams-xgcc40-mt-1_39 boost_regex-xgcc40-mt-1_39)
#      SET(Boost_LIBRARIES boost_thread-mt-1_34_1 boost_program_options-mt-1_34_1 boost_filesystem-mt-1_34_1 boost_serialization-mt-1_34_1 boost_iostreams-mt-1_34_1 boost_regex-mt-1_34_1)
   ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
      SET(Boost_LIBRARIES boost_thread boost_program_options boost_filesystem boost_serialization boost_iostreams boost_regex)
   ELSE(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
      SET(Boost_LIBRARIES boost_thread-gcc42-mt boost_program_options-gcc42-mt boost_filesystem-gcc42-mt boost_serialization-gcc42-mt boost_iostreams-gcc42-mt boost_regex-gcc42-mt)
   ENDIF(CYGWIN)
ELSE(Boost_FOUND)
   MESSAGE(FATAL_ERROR "Could not find Boost")
ENDIF(Boost_FOUND)


but I'm getting error at finish with luxconsole again
Code: Select all
[ 96%] Building CXX object CMakeFiles/luxconsole.dir/renderer/luxconsole.o
In file included from /usr/local/include/boost-1_39/boost/serialization/vector.hpp:203,
                 from /home/psycho/luxrender/lux/core/lux.h:35,
                 from /home/psycho/luxrender/lux/renderer/luxconsole.cpp:39:
/usr/local/include/boost-1_39/boost/serialization/collection_traits.hpp:59:1: warning: "BOOST_NO_INTRINSIC_INT64_T" redefined
<command-line>: warning: this is the location of the previous definition
Linking CXX executable luxconsole
/usr/bin/ld: cannot find -lboost_iostreams-gcc42-mt
collect2: ld returned 1 exit status
make[2]: *** [luxconsole] Error 1
make[1]: *** [CMakeFiles/luxconsole.dir/all] Error 2
make: *** [all] Error 2


also is this error ok and doesn't matter or it is something with intel 64bit cpus?? I have one and want best possible performance on it
Code: Select all
/usr/local/include/boost-1_39/boost/serialization/collection_traits.hpp:59:1: warning: "BOOST_NO_INTRINSIC_INT64_T" redefined
<command-line>: warning: this is the location of the previous definition
User avatar
psychotron
Developer
 
Posts: 836
Joined: Tue Jan 15, 2008 4:04 am
Location: Pleiades

Re: GCC - luxrender binary missing

Postby jeanphi » Fri Aug 21, 2009 2:05 am

Hi,

The line you changed is the correct line, and contrary to your impression, it's not a FreeBSD line. CMake has the rather strange requirement that you put the condition of the IF statement in the ELSE and ENDIF statements.

Could you check that you have a libboost_iostreams-gcc42-mt.a file in the lib folder of your BOOST_ROOT directory? Do you have any .a file with a name similar? If not it means boost didn't build the iostreams library and it's unfortunately required for flm and network rendering.

The warning is harmless. We used to define BOOST_NO_INTRINSIC_INT64_T on 64 bit platforms because older versions of boost missed it and it caused some boost libraries to misbehave. Our definition is now unnecessary because it has been included in boost proper. I'll try to remember to remove it after v0.6 is out which should be real soon now hopefully :)

Jeanphi
jeanphi
Developer
 
Posts: 7943
Joined: Mon Jan 14, 2008 7:21 am

Re: GCC - luxrender binary missing

Postby psychotron » Fri Aug 21, 2009 2:21 am

hmm libboost_iostreams-gcc42-mt.a isn't present on my file system

so now I must compile boost again and install it.. but how I get that iostreams libraries to pop up?
I use those step provided by jens for building boost

Code: Select all
./bootstrap.sh --with-toolset=gcc

./bjam toolset=toolset link=static threading=multi address-model=64

./bjam install
User avatar
psychotron
Developer
 
Posts: 836
Joined: Tue Jan 15, 2008 4:04 am
Location: Pleiades

Next

Return to Compilation & Portability

Who is online

Users browsing this forum: No registered users and 1 guest