Unable to compile: Linux

Added by xiphos about 8 years ago

Greetings,

I have been having difficulty with compiling following the provided instructions. Following the Build Source (Linux) instructions, I encounter the following:

xiphos@metropolis:~/src/ryzom/code/ryzom> ${RYZOM_PATH}/tools/scripts/linux/make_all
*********************** BUILD INIT NEL SUCCESS !

*********************** BUILD NEL SUCCESS !

*********************** BUILD NEL INSTALL SUCCESS !

rm: /data/home/xiphos/src/ryzom/code/ryzom/server/src/*/*.packed_sheets: No such file or directory
***************************************************
***************************************************
*********************** UPDATE RYZOM MAKEFILE COMMON FAILED
***************************************************
***************************************************
exiting...

The logs show the above were not as successful as stated:

/usr/local/share/aclocal/smpeg.m4:13: warning: underquoted definition of AM_PATH_SMPEG
/usr/local/share/aclocal/smpeg.m4:13:   run info '(automake)Extending aclocal'
/usr/local/share/aclocal/smpeg.m4:13:   or see http://sources.redhat.com/automake/automake.html#Extending-ac
local
configure.ac:25: installing `./config.guess'
configure.ac:25: installing `./config.sub'
configure.ac:17: installing `./install-sh'
configure.ac:17: installing `./missing'
samples/3d/cegui/Makefile.am: installing `./depcomp'
configure.ac: installing `./ylwrap'
configure: WARNING: Unrecognized options: --with-stlport, --with-python-version, --with-nel
configure: WARNING: png.h: accepted by the compiler, rejected by the preprocessor!
configure: WARNING: png.h: proceeding with the compiler's result
configure: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!
configure: WARNING: jpeglib.h: proceeding with the compiler's result
configure: WARNING: Unrecognized options: --with-stlport, --with-python-version, --with-nel
*********************** BUILD INIT NEL SUCCESS !

1 error
*********************** BUILD NEL SUCCESS !

1 error
*********************** BUILD NEL INSTALL SUCCESS !

Error expanding embedded variable.
***************************************************
***************************************************
*********************** UPDATE RYZOM MAKEFILE COMMON FAILED
***************************************************
***************************************************
No email to send the error mail

Proceeding to the CMake instructions, I go to the nel source directory, create a build directory, and proceed as instructed:

xiphos@metropolis:~/src/ryzom/code> setenv RYHOME "`pwd`" 
xiphos@metropolis:~/src/ryzom/code> cd nel/build
xiphos@metropolis:~/src/ryzom/code/nel/build> cmake -DWITH_TESTS=OFF -DWITH_TOOLS=OFF -DWITH_SAMPLES=OFF ..
-- The CXX compiler identification is GNU
-- The C compiler identification is GNU
-- 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
-- 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
-- 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
-- checking for module 'libxml-2.0'
--   found libxml-2.0, version 2.7.6
-- Found LibXml2: /usr/local/lib/libxml2.so
-- Found ZLIB: /usr/lib/libz.so
-- Found PNG: /usr/local/lib/libpng.so
-- Found Jpeg: /usr/local/lib/libjpeg.so
-- Found FreeType: /usr/local/lib/libfreetype.so
-- Looking for XOpenDisplay in /usr/local/lib/libX11.so;/usr/local/lib/libXext.so
-- Looking for XOpenDisplay in /usr/local/lib/libX11.so;/usr/local/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/local/lib/libX11.so
-- Warning: Unable to find XF86VidMode!
-- Warning: Unable to find XRandR!
-- Configuring done
-- Generating done
-- Build files have been written to: /home/xiphos/src/ryzom/code/nel/build

So far so good. It's a headless machine that acts as a dedicated server, so it's unsurprising there's no XF86VidMode or XRandR

xiphos@metropolis:~/src/ryzom/code/nel/build> make -j3
Scanning dependencies of target nelmisc_pch_dephelp
[  0%] Building CXX object src/misc/CMakeFiles/nelmisc_pch_dephelp.dir/stdmisc.cpp.o
Scanning dependencies of target nel_drv_opengl_pch_dephelp
Scanning dependencies of target nel3d_pch_dephelp
[  0%] Building CXX object src/3d/driver/opengl/CMakeFiles/nel_drv_opengl_pch_dephelp.dir/stdopengl.cpp.o
[  0%] Building CXX object src/3d/CMakeFiles/nel3d_pch_dephelp.dir/std3d.cpp.o
Linking CXX static library ../../lib/libnelmisc_pch_dephelp.a
[  0%] Built target nelmisc_pch_dephelp
Scanning dependencies of target nelgeorges_pch_dephelp
[  0%] Building CXX object src/georges/CMakeFiles/nelgeorges_pch_dephelp.dir/stdgeorges.cpp.o
In file included from /usr/local/include/libxml2/libxml/parser.h:801,
                 from /home/xiphos/src/ryzom/code/nel/src/georges/stdgeorges.h:28,
                 from /home/xiphos/src/ryzom/code/nel/src/georges/stdgeorges.cpp:17:
/usr/local/include/libxml2/libxml/encoding.h:28:19: error: iconv.h: No such file or directory
In file included from /usr/local/include/libxml2/libxml/parser.h:801,
                 from /home/xiphos/src/ryzom/code/nel/src/georges/stdgeorges.h:28,
                 from /home/xiphos/src/ryzom/code/nel/src/georges/stdgeorges.cpp:17:
/usr/local/include/libxml2/libxml/encoding.h:136: error: 'iconv_t' does not name a type
/usr/local/include/libxml2/libxml/encoding.h:137: error: 'iconv_t' does not name a type
*** Error code 1
1 error
*** Error code 2
Linking CXX static library ../../../../lib/libnel_drv_opengl_pch_dephelp.a
[  0%] Built target nel_drv_opengl_pch_dephelp
Linking CXX static library ../../lib/libnel3d_pch_dephelp.a
[  0%] Built target nel3d_pch_dephelp
1 error
*** Error code 2
1 error

That's no good! I check, and iconv.h is in /usr/local/include. I clear things out and rerun CMake adding a -I/usr/local/include flag, then try again but get the same error. On a whim, I try without the -j3 flag and get a completely different error:

xiphos@metropolis:~/src/ryzom/code/nel/build> make
[  0%] Built target nelmisc_pch_dephelp
[  0%] Built target pch_Generate_nelmisc
[  0%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/bitmap_jpeg.cpp.o
[  0%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/bitmap_png.cpp.o
/home/xiphos/src/ryzom/code/nel/src/misc/bitmap_png.cpp: In member function 'bool NLMISC::CBitmap::writePNG(NLMISC::IStream&, uint32)':
/home/xiphos/src/ryzom/code/nel/src/misc/bitmap_png.cpp:210: warning: argument 'd' might be clobbered by 'longjmp' or 'vfork'
[  0%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/block_memory.cpp.o
[  1%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/bsphere.cpp.o
[  1%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/buf_fifo.cpp.o
[  1%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/check_fpu.cpp.o
[  1%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/class_id.cpp.o
[  1%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/class_registry.cpp.o
[  1%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/cmd_args.cpp.o
[  2%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/co_task.cpp.o
[  2%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/log.cpp.o
[  2%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/command.cpp.o
[  2%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/common.cpp.o
[  2%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/contiguous_block_allocator.cpp.o
[  2%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/cpu_time_stat.cpp.o
[  3%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/debug.cpp.o
[  3%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/di_event_emitter.cpp.o
[  3%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/di_game_device.cpp.o
[  3%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/di_keyboard_device.cpp.o
[  3%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/di_mouse_device.cpp.o
[  4%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/diff_tool.cpp.o
[  4%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/displayer.cpp.o
[  4%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/dummy_window.cpp.o
[  4%] Building CXX object src/misc/CMakeFiles/nelmisc.dir/dynloadlib.cpp.o
/home/xiphos/src/ryzom/code/nel/src/misc/dynloadlib.cpp: In member function 'bool NLMISC::CLibrary::loadLibrary(const std::string&, bool, bool, bool)':
/home/xiphos/src/ryzom/code/nel/src/misc/dynloadlib.cpp:213: error: invalid conversion from 'const char*' to 'char*'
*** Error code 1

Stop in /data/home/xiphos/src/ryzom/code/nel/build.
*** Error code 1

Stop in /data/home/xiphos/src/ryzom/code/nel/build.
*** Error code 1

Stop in /data/home/xiphos/src/ryzom/code/nel/build.

Any thoughts? I'll keep plugging away and post any solutions I find for any who come after me.
Thanks!


Replies (2)

RE: Unable to compile: Linux - Added by vl about 8 years ago

Hello,

look at line 213 on dynloadlib.cpp and change:

char *errormsg=dlerror();

into

const char *errormsg=dlerror();

and tell us if it works better

RE: Unable to compile: Linux - Added by xiphos about 8 years ago

Thank you, that seems to have resolved that issue.
The other issue cropped up again, even with explicitely telling cmake to include /usr/local/include - or perhaps I am mis-understanding the syntax?

xiphos@metropolis:~/src/ryzom/code/nel/build> cmake -DWITH_TESTS=OFF -DWITH_TOOLS=OFF -DWITH_SAMPLES=OFF -DINCLUDE_DIRECTORIES=/usr/local/include ..

The fix was easy enough: edit all flags.make files to have -I/usr/local/include. There was also some weirdness going on with the AL libraries; even with the -I/usr/local/include flag it was failing. Yet if I ran the failing command exactly as it appeared with a make VERBOSE=1 manually, it concluded with out issues. This happened at a few locations, but I did not have the where-with-all to note which commands failed in this manner.

NeL has now compiled on FreeBSD AMD64. Since the FreeBSD ports tree is still on luabind 0.7, the Ryzom client/server is a different story, but I feel confident about tackling that one :)

Thanks again for the help! Hopefully this will come in useful for others, as well.

(1-2/2)