Title: Compilation problems on trunk and 1.16
Post by: Herk on August 24, 2013, 03:05:22 AM
Greetings, I had a few problems when trying to compile mandelbulber from sources, both from the latest svn trunk (360) and the 1.16 release. They're pretty easily fixed though. Below is a patch that fixes them, but for the second problem below, I'm not sure it's the correct solution, unless the comment about subdir.mk beeing automatically generated is no longer valid. Index: makefiles/src/subdir.mk =================================================================== --- makefiles/src/subdir.mk (revision 360) +++ makefiles/src/subdir.mk (working copy) @@ -16,6 +16,7 @@ ../src/image.cpp \ ../src/interface.cpp \ ../src/morph.cpp \ +../src/netrender.cpp \ ../src/primitives.cpp \ ../src/settings.cpp \ ../src/shaders.cpp \ @@ -36,6 +37,7 @@ ./src/image.o \ ./src/interface.o \ ./src/morph.o \ +./src/netrender.o \ ./src/primitives.o \ ./src/settings.o \ ./src/shaders.o \ @@ -56,6 +58,7 @@ ./src/image.d \ ./src/interface.d \ ./src/morph.d \ +./src/netrender.d \ ./src/primitives.d \ ./src/settings.d \ ./src/shaders.d \ Index: src/texture.cpp =================================================================== --- src/texture.cpp (revision 360) +++ src/texture.cpp (working copy) @@ -5,6 +5,7 @@ * Author: krzysztof */ #include <stdio.h> +#include <cstring> #include "texture.hpp" #include "files.h" Index: src/timeline.cpp =================================================================== --- src/timeline.cpp (revision 360) +++ src/timeline.cpp (working copy) @@ -6,7 +6,7 @@ */ #include <cstdlib> - +#include <cstring> #include "timeline.hpp" #include "files.h" #include "interface.h"
The patch fixes the following problems: 1) Missing #include <cstring> There is a missing include of <cstring> in texture.cpp and timeline.cpp (or .hpp). Without it, these files wont compile for me due to "definition of memset was not declared in this scope". Building file: ../src/texture.cpp Invoking: GCC C++ Compiler g++ -O3 -march=native -mfpmath=387,sse -ffast-math -Wall -c -fmessage-length=0 `pkg-config --cflags gtk+-2.0 gthread-2.0;` -MMD -MP -MF"src/texture.d" -MT"src/texture.d" -o "src/texture.o" "../src/texture.cpp" ../src/texture.cpp: In constructor ‘cTexture::cTexture(const char*)’: ../src/texture.cpp:56:42: error: ‘memset’ was not declared in this scope memset(bitmap,255,sizeof(sRGB8)*100*100); ^ ../src/texture.cpp: In constructor ‘cTexture::cTexture()’: ../src/texture.cpp:66:41: error: ‘memset’ was not declared in this scope memset(bitmap,255,sizeof(sRGB8)*100*100); ^ make: *** [src/texture.o] Error 1
2) Undefined reference to netRender This is only a problem on trunk, not on the 1.16 release. I get the error message below, "undefined reference to netRender". It seems like netrender.c/netrender.d/netrender.cpp is no longer part of CPP_SRCS, OBJS and CPP_DEPS in $SVNROOT/makefiles/src/subdir.mk (it is in the 1.16 release). Adding it to the variables defined in subdir.mk solves the problem and everything compiles fine. That file is apparently automatically generated, and I have no clue where the proper place to fix it is though, unless these files no longer are automatically generated. <snip> Building target: mandelbulber Invoking: GCC C++ Linker g++ -o"mandelbulber" -L/usr/lib/x86_64-linux-gnu/ ./src/Render3D.o ./src/algebra.o ./src/callbacks.o ./src/cimage.o ./src/cl_support.o ./src/common_math.o ./src/database.o ./src/files.o ./src/fractal.o ./src/image.o ./src/interface.o ./src/morph.o ./src/primitives.o ./src/settings.o ./src/shaders.o ./src/texture.o ./src/timeline.o ./src/undo.o -lpng -ljpeg `pkg-config --libs gtk+-2.0 gthread-2.0` ./src/Render3D.o: In function `Render(sParamRender, cImage*, _GtkWidget*)': Render3D.cpp:(.text+0x412e): undefined reference to `netRender' Render3D.cpp:(.text+0x4226): undefined reference to `CNetRender::sendDataToClient(void*, unsigned long, char*, int, int)' Render3D.cpp:(.text+0x4240): undefined reference to `netRender' Render3D.cpp:(.text+0x4de5): undefined reference to `netRender' Render3D.cpp:(.text+0x4e27): undefined reference to `CNetRender::sendDataToClient(void*, unsigned long, char*, int, int)' Render3D.cpp:(.text+0x4e2e): undefined reference to `netRender' Render3D.cpp:(.text+0x5d1c): undefined reference to `netRender' Render3D.cpp:(.text+0x66d6): undefined reference to `netRender' Render3D.cpp:(.text+0x66f8): undefined reference to `CNetRender::receiveDataFromServer(char*)' Render3D.cpp:(.text+0x6763): undefined reference to `netRender' Render3D.cpp:(.text+0x6784): undefined reference to `netRender' Render3D.cpp:(.text+0x6823): undefined reference to `netRender' Render3D.cpp:(.text+0x6868): undefined reference to `CNetRender::sendDataToClient(void*, unsigned long, char*, int, int)' Render3D.cpp:(.text+0x686f): undefined reference to `netRender' Render3D.cpp:(.text+0x68a3): undefined reference to `netRender' Render3D.cpp:(.text+0x68c7): undefined reference to `CNetRender::receiveDataFromClient(char*, int, int)' Render3D.cpp:(.text+0x68f1): undefined reference to `netRender' Render3D.cpp:(.text+0x68f6): undefined reference to `CNetRender::GetData(void*)' Render3D.cpp:(.text+0x6a61): undefined reference to `netRender' Render3D.cpp:(.text+0x6d5e): undefined reference to `netRender' Render3D.cpp:(.text+0x6de1): undefined reference to `netRender' Render3D.cpp:(.text+0x6e17): undefined reference to `CNetRender::sendDataToClient(void*, unsigned long, char*, int, int)' Render3D.cpp:(.text+0x6e1e): undefined reference to `netRender' Render3D.cpp:(.text+0x6e6b): undefined reference to `netRender' Render3D.cpp:(.text+0x6eb7): undefined reference to `netRender' Render3D.cpp:(.text+0x7064): undefined reference to `CNetRender::receiveDataFromServer(char*)' Render3D.cpp:(.text+0x70d2): undefined reference to `netRender' Render3D.cpp:(.text+0x70e0): undefined reference to `CNetRender::sendDataToServer(void*, unsigned long, char*)' Render3D.cpp:(.text+0x7104): undefined reference to `netRender' Render3D.cpp:(.text+0x7169): undefined reference to `CNetRender::sendDataToClient(void*, unsigned long, char*, int, int)' Render3D.cpp:(.text+0x7170): undefined reference to `netRender' Render3D.cpp:(.text+0x71f1): undefined reference to `netRender' Render3D.cpp:(.text+0x71f9): undefined reference to `CNetRender::GetData(void*)' Render3D.cpp:(.text+0x7218): undefined reference to `netRender' Render3D.cpp:(.text+0x7225): undefined reference to `CNetRender::GetData(void*)' Render3D.cpp:(.text+0x73c3): undefined reference to `netRender' Render3D.cpp:(.text+0x73cf): undefined reference to `CNetRender::sendDataToServer(void*, unsigned long, char*)' ./src/Render3D.o: In function `MainRender()': Render3D.cpp:(.text+0x8ddd): undefined reference to `netRender' Render3D.cpp:(.text+0x9075): undefined reference to `netRender' ./src/Render3D.o: In function `ThumbnailRender2(sParamRender, cImage*)': Render3D.cpp:(.text+0xddf2): undefined reference to `netRender' Render3D.cpp:(.text+0xded8): undefined reference to `CNetRender::sendDataToClient(void*, unsigned long, char*, int, int)' Render3D.cpp:(.text+0xdef2): undefined reference to `netRender' Render3D.cpp:(.text+0xe97f): undefined reference to `netRender' Render3D.cpp:(.text+0xe9b5): undefined reference to `CNetRender::sendDataToClient(void*, unsigned long, char*, int, int)' Render3D.cpp:(.text+0xe9bc): undefined reference to `netRender' Render3D.cpp:(.text+0xf8f0): undefined reference to `netRender' Render3D.cpp:(.text+0x10279): undefined reference to `netRender' Render3D.cpp:(.text+0x1029e): undefined reference to `CNetRender::receiveDataFromServer(char*)' Render3D.cpp:(.text+0x102fc): undefined reference to `netRender' Render3D.cpp:(.text+0x1031d): undefined reference to `netRender' Render3D.cpp:(.text+0x10363): undefined reference to `netRender' Render3D.cpp:(.text+0x103a5): undefined reference to `CNetRender::sendDataToClient(void*, unsigned long, char*, int, int)' Render3D.cpp:(.text+0x103ac): undefined reference to `netRender' Render3D.cpp:(.text+0x103d3): undefined reference to `netRender' Render3D.cpp:(.text+0x103f0): undefined reference to `CNetRender::receiveDataFromClient(char*, int, int)' Render3D.cpp:(.text+0x10413): undefined reference to `netRender' Render3D.cpp:(.text+0x10418): undefined reference to `CNetRender::GetData(void*)' Render3D.cpp:(.text+0x1052a): undefined reference to `netRender' Render3D.cpp:(.text+0x1058c): undefined reference to `netRender' Render3D.cpp:(.text+0x10605): undefined reference to `netRender' Render3D.cpp:(.text+0x10689): undefined reference to `netRender' Render3D.cpp:(.text+0x106b5): undefined reference to `CNetRender::sendDataToClient(void*, unsigned long, char*, int, int)' Render3D.cpp:(.text+0x106bc): undefined reference to `netRender' Render3D.cpp:(.text+0x10710): undefined reference to `netRender' Render3D.cpp:(.text+0x10761): undefined reference to `netRender' Render3D.cpp:(.text+0x109f7): undefined reference to `CNetRender::receiveDataFromServer(char*)' Render3D.cpp:(.text+0x10a64): undefined reference to `netRender' Render3D.cpp:(.text+0x10a72): undefined reference to `CNetRender::sendDataToServer(void*, unsigned long, char*)' Render3D.cpp:(.text+0x10a91): undefined reference to `netRender' Render3D.cpp:(.text+0x10adc): undefined reference to `CNetRender::sendDataToClient(void*, unsigned long, char*, int, int)' Render3D.cpp:(.text+0x10ae3): undefined reference to `netRender' Render3D.cpp:(.text+0x10b13): undefined reference to `netRender' Render3D.cpp:(.text+0x10b1b): undefined reference to `CNetRender::GetData(void*)' Render3D.cpp:(.text+0x10b3a): undefined reference to `netRender' Render3D.cpp:(.text+0x10b47): undefined reference to `CNetRender::GetData(void*)' Render3D.cpp:(.text+0x10cd3): undefined reference to `netRender' Render3D.cpp:(.text+0x10cdf): undefined reference to `CNetRender::sendDataToServer(void*, unsigned long, char*)' ./src/Render3D.o: In function `main': Render3D.cpp:(.text.startup+0x751): undefined reference to `CNetRender::CNetRender(int, int)' Render3D.cpp:(.text.startup+0x75d): undefined reference to `netRender' ./src/callbacks.o: In function `StopRenderingAndQuit(_GtkWidget*, _GdkEvent*, void*)': callbacks.cpp:(.text+0x1cbc): undefined reference to `netRender' callbacks.cpp:(.text+0x1ce3): undefined reference to `CNetRender::sendDataToClient(void*, unsigned long, char*, int, int)' callbacks.cpp:(.text+0x1cea): undefined reference to `netRender' ./src/callbacks.o: In function `StopRendering(_GtkWidget*, void*)': callbacks.cpp:(.text+0x306c): undefined reference to `netRender' callbacks.cpp:(.text+0x3093): undefined reference to `CNetRender::sendDataToClient(void*, unsigned long, char*, int, int)' callbacks.cpp:(.text+0x309a): undefined reference to `netRender' ./src/callbacks.o: In function `PressedServerEnable(_GtkWidget*, void*)': callbacks.cpp:(.text+0x112f7): undefined reference to `netRender' callbacks.cpp:(.text+0x11302): undefined reference to `CNetRender::SetServer(char*, char*)' callbacks.cpp:(.text+0x1133b): undefined reference to `netRender' callbacks.cpp:(.text+0x11340): undefined reference to `CNetRender::DeleteServer()' ./src/callbacks.o: In function `PressedServerScan(_GtkWidget*, void*)': callbacks.cpp:(.text+0x113a3): undefined reference to `netRender' callbacks.cpp:(.text+0x1143e): undefined reference to `netRender' callbacks.cpp:(.text+0x11446): undefined reference to `CNetRender::WaitForClient(char*)' callbacks.cpp:(.text+0x11465): undefined reference to `netRender' ./src/callbacks.o: In function `SendSettingsToClients(sParamRender)': callbacks.cpp:(.text+0x1159b): undefined reference to `netRender' callbacks.cpp:(.text+0x115c5): undefined reference to `CNetRender::sendDataToClient(void*, unsigned long, char*, int, int)' callbacks.cpp:(.text+0x115cc): undefined reference to `netRender' ./src/callbacks.o: In function `PressedClientEnable(_GtkWidget*, void*)': callbacks.cpp:(.text+0x12553): undefined reference to `netRender' callbacks.cpp:(.text+0x12563): undefined reference to `CNetRender::SetClient(char*, char*, char*)' callbacks.cpp:(.text+0x125e3): undefined reference to `netRender' callbacks.cpp:(.text+0x125eb): undefined reference to `CNetRender::receiveDataFromServer(char*)' callbacks.cpp:(.text+0x1265b): undefined reference to `netRender' callbacks.cpp:(.text+0x12660): undefined reference to `CNetRender::DeleteClient()' callbacks.cpp:(.text+0x1269e): undefined reference to `netRender' callbacks.cpp:(.text+0x126a9): undefined reference to `CNetRender::GetData(void*)' ./src/callbacks.o: In function `NoGUIClientEnable()': callbacks.cpp:(.text+0x12708): undefined reference to `netRender' callbacks.cpp:(.text+0x12712): undefined reference to `CNetRender::SetClient(char*, char*, char*)' callbacks.cpp:(.text+0x12776): undefined reference to `netRender' callbacks.cpp:(.text+0x1277e): undefined reference to `CNetRender::receiveDataFromServer(char*)' callbacks.cpp:(.text+0x127fb): undefined reference to `netRender' callbacks.cpp:(.text+0x12806): undefined reference to `CNetRender::GetData(void*)' collect2: error: ld returned 1 exit status make: *** [mandelbulber] Error 1
Title: Re: Compilation problems on trunk and 1.16
Post by: Buddhi on September 16, 2013, 09:07:41 PM
I have just fixed this problem by putting fresh makefiles into SVN repository. By the way I don't recommend to use sources directly from SVN, because those are often in development stage. To have ready-to-use sources it's better to download latest version from http://sourceforge.net/projects/mandelbulber/files/?
|