linux 64bit binary?

All topics about ZGameEditor goes here.

Moderator: Moderators

Dragon
Posts: 8
Joined: Mon May 27, 2013 8:30 pm
Location: Germany

linux 64bit binary?

Post by Dragon »

At first Hello again I wasn't long active in this forum. I hadn't alot of time
in the last months but now im back I hope.

But now I have a question.
I have a linux(ubuntu 13.10) system and have trying to use ZGameEditor in wine but the binnarys I would like to have in an native Linux Player file but I
fail to compile myself so I have the question
Have anyone the linux (64bit) Player binary for the new beta I try to compile him to compile(with FPC 2.7.x) the last hours but it doesn't work.
Can anyone give me the binary, please.
User avatar
Ats
Posts: 738
Joined: Fri Sep 28, 2012 10:05 am
Contact:

Post by Ats »

Hi Dragon, I'm using ZGE under xubuntu+wine too.
I've compiled the player a long time ago, maybe that could be useful for you: viewtopic.php?t=995
But it was 32bits.
Last edited by Ats on Wed Feb 19, 2014 10:48 pm, edited 1 time in total.
Imerion
Posts: 200
Joined: Sun Feb 09, 2014 4:42 pm

Post by Imerion »

Hi!

I also use Ubuntu 13.10 64 bit, so I use ZGameEditor in Wine. (Which works great!)

Ats, your 32 bit player seems to work fine on my system. Maybe I'll try to compile a 64 bit version some day, but I'm not sure how for the moment. I haven't used FreePascal much.
Dragon
Posts: 8
Joined: Mon May 27, 2013 8:30 pm
Location: Germany

Post by Dragon »

thanks Ats but both doesn't work I have try it with your zzdc.dat(renamed to Player_linux.bin) and with your FPC command.Your zzdc.dat make a file but ican't execute it(I have test it with the shaderexample).
Have anyon another idea
Last edited by Dragon on Thu Feb 20, 2014 2:28 pm, edited 1 time in total.
User avatar
Ats
Posts: 738
Joined: Fri Sep 28, 2012 10:05 am
Contact:

Post by Ats »

Like I said, it was for an old version (3.0.0, we are now 3.1b).
So I guess that if if you are launching your game from the console, you'll get something like this:

Code: Select all

Runtime error 216 at $0804B365
  $0804B365
  $0805128A
I was just pointing to the topic where you could find informations about the libs that you need to install in order to compile ZzDC. It's a bit late right now, so I'll write a tuto this weekend ;)
Dragon
Posts: 8
Joined: Mon May 27, 2013 8:30 pm
Location: Germany

Post by Dragon »

thanks Ats.
User avatar
Ats
Posts: 738
Joined: Fri Sep 28, 2012 10:05 am
Contact:

Post by Ats »

Sorry Dragon, there will be no tuto this weekend... I've just spent 6 hours trying to compile ZzDC without luck. Whathever I tried, I'm stuck with:

ZPlatform_SDL.inc(13,18 ) Fatal: Can't find unit libc used by ZPlatform

I don't remember having that problem the last time I compiled it. I even broke my linux by trying to build glibc from scratch. Luckily, I have all my stuff on the cloud... So I don't know if it comes from ZGE sourcecode, or if something has changed with free pascal. Because all is installed and linked fine so I don't get why it won't compile :?

Ville, do you have some clues ?
User avatar
VilleK
Site Admin
Posts: 2342
Joined: Mon Jan 15, 2007 4:50 pm
Location: Stockholm, Sweden
Contact:

Post by VilleK »

Isn't Libc.pas included with FreePascal on Linux anymore? It definitely used to be. Have you tried searching for that file?

edit: one version can be found here https://github.com/graemeg/freepascal/t ... kages/libc
User avatar
Ats
Posts: 738
Joined: Fri Sep 28, 2012 10:05 am
Contact:

Post by Ats »

I searched for libc and founded libc.so.6 but not libc.pas
Also, there is no libc folder inside /usr/lib/fpc/2.6.2/units/i386-linux/
Is that related ? http://wiki.lazarus.freepascal.org/libc_unit

I downloaded the whole free pascal from github, but didn't manage to compile libc...
But you can already find libc's source here: /usr/share/fpcsrc/2.6.2/packages/libc/
So I compiled that last one using:
fpcmake -w -Tall
make
make install

it gaves

Code: Select all

/usr/bin/fpcmake -p -Ti386-linux Makefile.fpc
Processing Makefile.fpc
 Writing Package.fpc
/usr/bin/install -m 755 -d /usr/local/lib/fpc/2.6.2/units/i386-linux/libc
/usr/bin/install -c -m 644 Package.fpc /usr/local/lib/fpc/2.6.2/units/i386-linux/libc
/usr/bin/install -m 755 -d /usr/local/lib/fpc/2.6.2/units/i386-linux/libc
/usr/bin/install -c -m 644 units/i386-linux/kerneldefs.ppu units/i386-linux/kernelioctl.ppu units/i386-linux/libc.ppu /usr/local/lib/fpc/2.6.2/units/i386-linux/libc
/usr/bin/install -c -m 644 units/i386-linux/kerneldefs.o units/i386-linux/kernelioctl.o units/i386-linux/libc.o /usr/local/lib/fpc/2.6.2/units/i386-linux/libc
but it didn't changed anything for ZzDC compilation...
So then I moved the compiled libc to /usr/lib/fpc/2.6.2/units/i386-linux/ using
sudo cp -avr /usr/local/lib/fpc/2.6.2/units/i386-linux/libc /usr/lib/fpc/2.6.2/units/i386-linux/libc

And finaly, ZzDC could compile properly (with some warnings but still).
And that was super complicated, I had to dig the dark spaces of the internet and read hundreds of forum posts in order to do that :lol:

So now it's 2AM. I'll write the tuto for compiling ZzDC for linux tomorow. Should I write it here or on a dedicated topic somewhere else in the forum?
User avatar
VilleK
Site Admin
Posts: 2342
Joined: Mon Jan 15, 2007 4:50 pm
Location: Stockholm, Sweden
Contact:

Post by VilleK »

It shouldn't have to be this difficult. But maybe they've actually removed Libc from the Freepascal distribution. In that case I should try to look for alternatives because platform_sdl only uses a few calls from Libc, they could be declared internally instead.

You've managed to build ZGE previously so something must have changed with your Freepascal installation. I see 2.6.2 in your path names. Did you try to build the latest Freepascal from the source?
User avatar
Ats
Posts: 738
Joined: Fri Sep 28, 2012 10:05 am
Contact:

Post by Ats »

I've formatted my computer several times since the last time I built ZGE :)

So here's the strip down tuto to compile ZzDC:

Open the console, update the source and install the needed libs
sudo apt-get update
sudo apt-get install fp-compiler subversion libsdl1.2-dev

Compile the lastest Free Pascal
svn checkout http://svn.freepascal.org/svn/fpc/trunk fpc
cd fpc
make all
sudo make install

Move the fpc from usr/local/lib to usr/lib
(That's the weird part, I don't know how to install fpc directly there...)
sudo cp -r /usr/local/lib/fpc/2.7.1 /usr/lib/fpc

Download and compile ZGE
svn checkout http://zgameeditor.googlecode.com/svn/trunk zge-src
cd zge-src
/usr/lib/fpc/2.7.1/ppc386 -al -XXis -O2 -dZZDC_SDL SDL -dMINIMAL -FU./Build/obj/ -B -Mdelphi -FE./Build/ ZzDC.dpr

Now all you have to do is go to zge-src/Build, rename ZzDC to Player_linux.bin and move it to your ZGameEditor folder.

From now on, you can simply export your ZGE project using Project/ Build Linux x86 binary
Dragon
Posts: 8
Joined: Mon May 27, 2013 8:30 pm
Location: Germany

Post by Dragon »

I even broke my linux by trying to build glibc from scratch(sorry Ats)

Ok I have try to compile the zzdc.dat as in your tutorial but i get an error
ok here ar a complete compiler log

Code: Select all

Dragon@Dragon:~/fpc/zge-src$ /usr/lib/fpc/2.7.1/ppcx64 -al -XXis -O2 -dZZDC_SDL SDL -dMINIMAL -FU./Build/obj/ -B -Mdelphi -FE./Build/ ZzDC.dpr
Warning: Only one source file supported, changing source file to compile from "SDL" into "ZzDC.dpr"
Free Pascal Compiler version 2.7.1 [2014/02/24] for x86_64
Copyright (c) 1993-2014 by Florian Klaempfl and others
Note: Switching assembler to default source writing assembler
Target OS: Linux for x86-64
Compiling ZzDC.dpr
ZzDC.dpr(23,2) Warning: Illegal compiler directive "$WEAKLINKRTTI"
ZzDC.dpr(26,4) Warning: Illegal compiler directive "$EXCESSPRECISION"
Compiling ZClasses.pas
Compiling ZMath.pas
Assembling zmath
Compiling ZLog.pas
Compiling ZPlatform.pas
Compiling SDL.pas
Assembling sdl
Compiling AudioPlayer.pas
Compiling AudioComponents.pas
Compiling ZApplication.pas
Compiling Meshes.pas
Compiling ZBitmap.pas
Compiling ZOpenGL.pas
Assembling zopengl
Assembling zbitmap
Compiling ZExpressions.pas
Compiling ZApplication.pas
Compiling Meshes.pas
Compiling ZApplication.pas
Compiling Collision.pas
Compiling ZApplication.pas
Compiling Commands.pas
Compiling ZApplication.pas
Compiling GLDrivers.pas
Compiling Renderer.pas
Compiling ZApplication.pas
Compiling GLDrivers.pas
GLDrivers.pas(489,32) Warning: Conversion between ordinals and pointers is not portable
GLDrivers.pas(494,43) Warning: Conversion between ordinals and pointers is not portable
GLDrivers.pas(500,38) Warning: Conversion between ordinals and pointers is not portable
GLDrivers.pas(851,54) Warning: Conversion between ordinals and pointers is not portable
GLDrivers.pas(857,63) Warning: Conversion between ordinals and pointers is not portable
GLDrivers.pas(864,56) Warning: Conversion between ordinals and pointers is not portable
Assembling gldrivers
Assembling zapplication
Renderer.pas(693,17) Warning: Converting pointers to signed integers may result in wrong comparison results and range errors, use an unsigned type instead.
Renderer.pas(1344,20) Warning: Converting pointers to signed integers may result in wrong comparison results and range errors, use an unsigned type instead.
Renderer.pas(1345,20) Warning: Converting pointers to signed integers may result in wrong comparison results and range errors, use an unsigned type instead.
Assembling renderer
Assembling commands
Assembling collision
Assembling meshes
ZExpressions.pas(483,52) Fatal: Can't find unit WinApi.Windows used by ZExpressions
Fatal: Compilation aborted
User avatar
VilleK
Site Admin
Posts: 2342
Joined: Mon Jan 15, 2007 4:50 pm
Location: Stockholm, Sweden
Contact:

Post by VilleK »

Dragon,

It seems like you are building a 64-bit version of ZGE for Linux. This has never been tested, I only tried building 64-bit for Windows. Can you try building with Freepascal 32-bit instead (or Freepascal 64-bit with 32-bit target)?
Dragon
Posts: 8
Joined: Mon May 27, 2013 8:30 pm
Location: Germany

Post by Dragon »

ok I have test it with cross compiler but
this doesn't work,too.
heres the new log

Code: Select all

'/usr/lib/codetyphon/fpc/bin/x86_64-linux/ppcross386' -al -XXis -O2 -dZZDC_SDL SDL -dMINIMAL -Tlinux -Pi386 -FU./Build/obj/ -B -Mdelphi -FE./Build/ ZzDC.dpr
Warning: Only one source file supported, changing source file to compile from "SDL" into "ZzDC.dpr"
ZzDC.dpr(23,2) Warning: Illegal compiler directive "$WEAKLINKRTTI"
ZMath.pas(576,9) Warning: "fdivp" without operand translated into "fdivp %st,%st(1)"
ZMath.pas(870,3) Warning: "fsubrp" without operand translated into "fsubrp %st,%st(1)"
ZMath.pas(888,3) Warning: "fsubrp" without operand translated into "fsubrp %st,%st(1)"
Renderer.pas(693,17) Warning: Converting pointers to signed integers may result in wrong comparison results and range errors, use an unsigned type instead.
Renderer.pas(1344,20) Warning: Converting pointers to signed integers may result in wrong comparison results and range errors, use an unsigned type instead.
Renderer.pas(1345,20) Warning: Converting pointers to signed integers may result in wrong comparison results and range errors, use an unsigned type instead.
AudioPlayer.pas(656,5) Warning: unreachable code
ZPlatform_SDL.inc(15,4) Warning: Unit "libc" is deprecated: "Unportable Kylix legacy unit that only exists on Linux/x86. see http://wiki.freepascal.org/libc_unit "
ZPlatform_SDL.inc(361,5) Warning: unreachable code
ZClasses.pas(658,5) Warning: Constructor should be public
ZClasses.pas(717,6) Warning: Converting pointers to signed integers may result in wrong comparison results and range errors, use an unsigned type instead.
ZClasses.pas(718,14) Warning: Converting pointers to signed integers may result in wrong comparison results and range errors, use an unsigned type instead.
ZClasses.pas(1247,23) Warning: Converting pointers to signed integers may result in wrong comparison results and range errors, use an unsigned type instead.
ZClasses.pas(2038,15) Warning: Converting pointers to signed integers may result in wrong comparison results and range errors, use an unsigned type instead.
ZClasses.pas(3857,19) Warning: Converting pointers to signed integers may result in wrong comparison results and range errors, use an unsigned type instead.
ZClasses.pas(3857,38) Warning: Converting pointers to signed integers may result in wrong comparison results and range errors, use an unsigned type instead.
ImplicitMeshes.pas(194,5) Warning: Constructor should be public
Warning: "crti.o" not found, this will probably cause a linking failure
Warning: "crtbegin.o" not found, this will probably cause a linking failure
Warning: "crtend.o" not found, this will probably cause a linking failure
Warning: "crtn.o" not found, this will probably cause a linking failure
/usr/lib/codetyphon/fpc/bin/x86_64-linux/i386-linux-ld: warning: ./Build/link.res contains output sections; did you forget -T?
/usr/lib/codetyphon/fpc/bin/x86_64-linux/i386-linux-ld: cannot find -lSDL
/usr/lib/codetyphon/fpc/bin/x86_64-linux/i386-linux-ld: cannot find -lpthread
/usr/lib/codetyphon/fpc/bin/x86_64-linux/i386-linux-ld: cannot find -ldl
/usr/lib/codetyphon/fpc/bin/x86_64-linux/i386-linux-ld: cannot find -lrt
/usr/lib/codetyphon/fpc/bin/x86_64-linux/i386-linux-ld: cannot find -lcrypt
/usr/lib/codetyphon/fpc/bin/x86_64-linux/i386-linux-ld: cannot find -lc
Error: Error while linking
Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted

Last edited by Dragon on Tue Mar 11, 2014 8:49 pm, edited 1 time in total.
User avatar
VilleK
Site Admin
Posts: 2342
Joined: Mon Jan 15, 2007 4:50 pm
Location: Stockholm, Sweden
Contact:

Post by VilleK »

Now the compiler works but the linker fails.

I believe this is because you don't have the 32-bit versions of the libraries that ZGE links to.

For instance when it says "cannot find -lSDL " try installing 32-bit SDL and see if it helps: http://www.libsdl.org/download-1.2.php
Post Reply