wxMax Compile problems

BlitzMax Forums/Brucey's Modules/wxMax Compile problems

mrburns(Posted 2008) [#1]
Hi,
I managed to get BlitzMax up and running on 64bit Ubuntu. The game samples work fine. I installed wxMax and rebuilt the modules. I don't think anything went wrong, but I can't compile any of the samples. I get this error:


Building statbar
Compiling:statbar.bmx
flat assembler version 1.64
4 passes, 66398 bytes.
Linking:statbar.debug
I: [hardy chroot] Running command: “g++-3.3 -m32 -s -Os --eh-frame-hdr -pthread -static-libgcc -o /home/sysop/BlitzMax/mod/wx.mod/samples/statbar.debug /home/sysop/BlitzMax/tmp/ld.tmp -L/usr/X11R6/lib -L/usr/lib -L/home/sysop/BlitzMax/lib -L/home/sysop/BlitzMax/mod/wx.mod/wx.mod/../lib/linux”
/usr/bin/ld: cannot find -ltiff
collect2: ld returned 1 exit status
Build Error: Failed to link /home/sysop/BlitzMax/mod/wx.mod/samples/statbar.debug
Process complete



I tried installing -ltiff 3 different ways. Synaptic32 and Synaptic both report it as being installed, but still no luck. Any advice???

Thanks

mrburns


Brucey(Posted 2008) [#2]
I think you need the libtiff "dev" package installed.

I believe it is called libtiff-dev


mrburns(Posted 2008) [#3]
Hi Brucey,

Thanks for the reply. The only libtiff-dev I could find was libtiff4-dev. I tried installing that one and I get this error:


Building hello_world
Compiling:hello_world.bmx
flat assembler version 1.64
3 passes, 4399 bytes.
Linking:hello_world.debug
I: [hardy chroot] Running command: “g++-3.3 -m32 -s -Os --eh-frame-hdr -pthread -static-libgcc -o /home/sysop/BlitzMax/mod/wx.mod/samples/hello_world.debug /home/sysop/BlitzMax/tmp/ld.tmp -L/usr/X11R6/lib -L/usr/lib -L/home/sysop/BlitzMax/lib -L/home/sysop/BlitzMax/mod/wx.mod/wx.mod/../lib/linux”
Executing:hello_world.debug
/usr/bin/ld: warning: libstdc++.so.6, needed by /usr/bin/../lib/libcairo.so.2, may conflict with libstdc++.so.5
Fatal Error: Mismatch between the program and library build versions detected.
The library used 2.8 (no debug,Unicode,compiler with C++ ABI 1002,wx containers,compatible with 2.6),
and your program used 2.8 (no debug,Unicode,compiler with C++ ABI 102,wx containers,compatible with 2.6).
Aborted

Process complete



I'm not sure what to do next. Thanks for the help!
mrburns


Winni(Posted 2008) [#4]
Funny, I found this thread while I was googling for a solution to what seems to be the same problem.

Were you able to fix this?


Brucey(Posted 2008) [#5]
You need to build wxWidgets with the same version of gcc as you are building your BlitzMax binaries.

Why?

Since the library is C++, the ABI changes from version to version. 4.x static lib won't work with a 3.x linker.

So, you either build wxWidgets with the same as you are using with BlitzMax (3.3 is it?), or... you make BlitzMax build with 4.x...

Alas, I can't seem to get Blitz to work properly with 4.x these days - although it used to. I get errors when the binary runs.


Winni(Posted 2008) [#6]
Ok, but where can I make that decision? I didn't choose any compiler version anywhere, at least not knowingly.

By the way, when I build maxide, it also fires me a similar warning, but about a libGLU. But at least MaxIDE runs, both with FLTK and your GTKMaxGUI module.


Here's something else, it might be related to the changes for multithreading:
Most of the samples coming with BlitzMax don't run anymore on either Windows or Linux. First, I have to add a bunch of Import statements and then they all blow themselves into Nirvana (Digesteroids and Breakout, for example). The MaxGUI sample GLCube runs after adding some imports. On OS X, everything works just fine and without the need to add Import statements. Very strange.


Winni(Posted 2008) [#7]
I've just found out that gcc is a symbol link to gcc<4xyzwhatever>. I changed it to point to gcc3 and now try my link one last time with rebuilding everything with that version of gcc.


mrburns(Posted 2008) [#8]
Hi, I never actually found a solution to this problem, so I just installed 32 bit Ubuntu on my amd64. Everything was working fine, but now that you mentioned it, I too am getting errors when I try to compile samples (firepaint.bmx). Oddly, wxMax works without a problem! I thought it may have been because I was using the community version of Max IDE instead of the official one, but I still get the same error. This isn't really a problem right now for me because I'm concentrating on wxMax apps at the moment. I would recommend installing 32bit because I think it solves a few other problems such as Flash sites. With 64bit, Flash seems to work only when it wants to.

Linking:firepaint.debug
/usr/bin/ld: cannot find -lGL
collect2: ld returned 1 exit status
Build Error: Failed to link /home/sysop/programs/BlitzMax/samples/firepaint/firepaint.debug

mrburns


Brucey(Posted 2008) [#9]
I too am getting errors when I try to compile samples

You need to install some packages...

possibly :

xlibmesa-gl-dev
xlibmesa-glu-dev

(see this post for guides to getting everything you need)


Winni(Posted 2008) [#10]
Thanks, mrburns. You're luckier than me. I am using 32-Bit Ubuntu 8.04.1, and whenever I want to compile a wxMax app, I am getting this libcairo error.

Recompiling everything with gcc3 (as I mentioned above) didn't help.

I think I'll give up now. I'll book it as yet another frustrating Linux experience. At least it helped with another decision that I have to make, namely which web server I am going to rent next. It won't be a Linux box - that platform is too unpredictable and too unproductive for my liking. I liked figuring out crap like that when I was a teenager, but at 38, I just hate wasting my time with such things. I do not want to come into a situation where my sanbox VM at home compiles a program of mine perfectly but when I deploy it on my server, I'll get weird error message like I'm getting them now. No, thank you very much.

Anyway, thanks a lot, Brucey, for your help and support - it's much appreciated!

Going back to OS X and Windows now... ;-)


Brucey(Posted 2008) [#11]
I am getting this libcairo error.

That isn't actually an error - just a warning.

The error will likely be because of either :
1) you built wxWidgets static libs with 4.x and wxMax with 3.x
2) you built both with 3.x, but there is a shared version of wxWidgets on the box which is being picked up ahead of the static libs at link time, which were built with 4.x

No 2 is interesting. I'm guessing that we aren't using -static as a gcc option on Linux? That should force the use of static libs over shared. If we are using that then I guess I dunno :-p

I'll have to have a rummage around the bmk code when I get home.


Winni(Posted 2008) [#12]
Thanks, Brucey. Whatever it was, it was more than just a warning: The beast stopped compiling.

But you're right, wxWidgets probably was compiled with gcc4, which is the default compiler on Ubuntu 8.04.

But I've given up on Linux and actually deleted the VM and the ISO image that I used to install it. This little endeavor only adds to the list why I prefer FreeBSD before all other open source systems.

Anyway, I'll stay on OS X with a little Vista by the side and my next rented server will be running Windows Server 2003.

But again, thanks for all your help!


Artemis(Posted 2008) [#13]
New Problem:

Getting this error while trying to compile the latest wxmax revision:
Compiling:editors.cpp
D:/BlitzMax/mod/wx.mod/wxpropgrid.mod/src/editors.cpp: In member function `wxWindow* wxPropertyGrid::GenerateEditorButton(const wxPoint&, const wxSize&)':
D:/BlitzMax/mod/wx.mod/wxpropgrid.mod/src/editors.cpp:2056: error: `wxS' was not declared in this scope
Build Error: failed to compile D:/BlitzMax/mod/wx.mod/wxpropgrid.mod/src/editors.cpp


I changed wxS to wxT and all worked fine.


Brucey(Posted 2008) [#14]
It builds here. wxS() is apparently a valid method.

Try deleting the .bmx folder in /src and see if that fixes it.

Ah...

from wxchar.h :
/* this macro exists only for forward compatibility with wx 3.0 */
#define wxS(x)       _T(x)


You might want to update your headers.
Looks like it's some more recently added functionality.


Artemis(Posted 2008) [#15]
Yeah, I updated headers, currently compiling (will take a while). Hopefully it'll work (The line you posted ist in the new header file, so im confident).

You might upload the new headers to the google-code-page, so everybody can see them there and maybe you might post it in a thread, so everybody sees it.


Brucey(Posted 2008) [#16]
You might upload the new headers to the google-code-page

They are here : http://code.google.com/p/wxmax/downloads/detail?name=wxwidgets_2.8.8_headers.zip

Don't forget, you'll need the matching static libs too.