Linux Question

godreborn

Welcome to the Machine
OP
Member
Joined
Oct 10, 2009
Messages
38,471
Trophies
3
XP
29,138
Country
United States
I'm trying to compile a linux only version of oot (already got it working with windows), but I have an issue with ubuntu and debian. apparently, neither one is compatible with i386 anymore, so I can't find i386 comparable packages to install, and it fails. this the command for i386, which obviously doesn't work now: sudo apt install libfreetype-dev:i386 libgl1-mesa-dev:i386 libsdl-dev:i386
 
  • Like
Reactions: Flame

linuxares

The inadequate, autocratic beast!
Global Moderator
Joined
Aug 5, 2007
Messages
13,326
Trophies
2
XP
18,195
Country
Sweden
yeah they dropped 32 bit support, honestly most should do it.

You could get Debian for 32-bit.
Else I would recommend:

openSUSE
Zorin OS
Alpine
 
  • Like
Reactions: godreborn

godreborn

Welcome to the Machine
OP
Member
Joined
Oct 10, 2009
Messages
38,471
Trophies
3
XP
29,138
Country
United States
yeah they dropped 32 bit support, honestly most should do it.

You could get Debian for 32-bit.
Else I would recommend:

openSUSE
Zorin OS
Alpine
I tried Debian, since I have it set with docker, but it couldn't find any i386 packages either.
 

godreborn

Welcome to the Machine
OP
Member
Joined
Oct 10, 2009
Messages
38,471
Trophies
3
XP
29,138
Country
United States
yeah they dropped 32 bit support, honestly most should do it.

You could get Debian for 32-bit.
Else I would recommend:

openSUSE
Zorin OS
Alpine
1644077805901.png
 

godreborn

Welcome to the Machine
OP
Member
Joined
Oct 10, 2009
Messages
38,471
Trophies
3
XP
29,138
Country
United States
I'm helping them get the issues with ooot on linux ironed out, at least with installation (problems others might have). we're very close to having it work on my machine, but the dev had to go for about three hours. may not finish it till tomorrow.
 

godreborn

Welcome to the Machine
OP
Member
Joined
Oct 10, 2009
Messages
38,471
Trophies
3
XP
29,138
Country
United States
nm, I think I figured out what to do. the elf is converted into a rom. I was able to build oot, only using linux. still can't figure out what's going on with the linux build that runs on linux. when it compiles, it starts trying to use 64bit. the build is 32bit, but it tries using 64bit files.

edit: btw, this build has music. the pc version doesn't unless they've added it since I originally built mine.

1645570796070.png
 

godreborn

Welcome to the Machine
OP
Member
Joined
Oct 10, 2009
Messages
38,471
Trophies
3
XP
29,138
Country
United States
Forgot to mention that you can use the switch n64 controller with this build. I was unable to figure out how to use that controller with the pc version, but the wii u pro controller works with that one.
 

ShadowEO

Well-Known Member
Member
Joined
Mar 31, 2009
Messages
542
Trophies
0
Age
32
Location
Ohio, USA
XP
446
Country
United States
1) It appears that your build system did not build an ELF for Linux, it built one for the N64 (see the "mips-" in front of the compiler's filename? that means the system is cross-compiling for the MIPS architecture which is the N64 archtiecture), thus why you're receiving a Z64 file and can only run it via PJ64. OoT does have a decompilation/port project like SM64 right? If it's only a decompilation/recompilation project you're only going to get a N64 rom.

2) You're running on a 64-bit processor, the build system WILL use 64-bit GCC but that will call the 32-bit versions as needed. Not sure if you're still stuck attempting to install 32-bit packages, but after using dpkg --add-architecture, you need to perform a apt update or apt-get update. If you mean that your built application is still attempting to use 64-bit libraries, you need to ensure that you have the 32-bit versions of those libraries installed, not just their -dev packages. Unfortunately, unless you run a 32-bit chroot, this may be impossible as usually Debian systems do not do multiarch and will attempt to replace a 64-bit package with a 32-bit one. Instead what you should do is compile your application for 64-bit instead (really, is there a reason to compile for 32-bit?)

Basically, even though you're compiling for the 32-bit version of libX (as an example), on a 32-bit system this will work fine because it has a 32-bit version of libX. Now on a 64-bit version, the application will attempt to look for libX from /usr/lib or /lib and since Debian/Ubuntu doesn't do multiarch like that any longer, the 32-bit application will instead attempt to load the 64-bit libX which won't work because the "bitness" is different (because libX will exist in the same place in 32-bit or 64-bit, and it being loaded as a dynamic library won't match the bitness). Hope that makes sense, compile it for x86_64/amd64 and try again, your linux build should then run properly. It may not run on WSL though due to WSL not having GPU acceleration (WSLg is not GPU acceleration, it's doing black magic to make GUI apps work)

I guess TL;DR, to make applications run between architectures (x86 and x86_64) like that, you need to compile it FOR that architecture, unfortunately it's not like on Windows where 32-bit applications can run perfectly on a 64-bit processor. On Linux, 32-bit applications REQUIRE 32-bit libraries, and the same for 64-bit.

Edit: Added some more to number 2.
 
Last edited by ShadowEO,
  • Like
Reactions: Takokeshi

godreborn

Welcome to the Machine
OP
Member
Joined
Oct 10, 2009
Messages
38,471
Trophies
3
XP
29,138
Country
United States
1) It appears that your build system did not build an ELF for Linux, it built one for the N64 (see the "mips-" in front of the compiler's filename? that means the system is cross-compiling for the MIPS architecture which is the N64 archtiecture), thus why you're receiving a Z64 file and can only run it via PJ64. OoT does have a decompilation/port project like SM64 right? If it's only a decompilation/recompilation project you're only going to get a N64 rom.

2) You're running on a 64-bit processor, the build system WILL use 64-bit GCC but that will call the 32-bit versions as needed. Not sure if you're still stuck attempting to install 32-bit packages, but after using dpkg --add-architecture, you need to perform a apt update or apt-get update. If you mean that your built application is still attempting to use 64-bit libraries, you need to ensure that you have the 32-bit versions of those libraries installed, not just their -dev packages. Unfortunately, unless you run a 32-bit chroot, this may be impossible as usually Debian systems do not do multiarch and will attempt to replace a 64-bit package with a 32-bit one. Instead what you should do is compile your application for 64-bit instead (really, is there a reason to compile for 32-bit?)

Edit: Added some more to number 2.
yes, I got it fixed a while back. I thought it was a linux build, but it's n64. the actual linux build has a lot of problems, and the dev removed it after getting pissed off in discord.
 

ShadowEO

Well-Known Member
Member
Joined
Mar 31, 2009
Messages
542
Trophies
0
Age
32
Location
Ohio, USA
XP
446
Country
United States
yes, I got it fixed a while back. I thought it was a linux build, but it's n64. the actual linux build has a lot of problems, and the dev removed it after getting pissed off in discord.
Ahhh that makes sense, I was wondering when I saw your compilation output lol. Apologies, didn't see you had fixed it if you had posted so :)
 
  • Love
Reactions: godreborn

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3Nv2 @ K3Nv2: I'm devastated