Pandora Compiling libpnd on x86 Linux


Noobish

Still Fresh
Joined
Jun 16, 2014
Messages
5
Age
38
First off, my apologies if this has been already addressed, or has been posted in the wrong section of the forums.

I've been attempting to compile the libpnd pandora-libraries on Linux Mint x86, and while I am relatively proficient with computers and and generally consider myself a power user, I am much more familiar with OS X than I am with any linux distro.

I would like to take advantage of the PND system on a desktop/laptop linux distro like mint as I agree with the philosophy of both the PND system and the "Linux Portable Apps" system, which separates applications from the system and allows for them to be portable similar to the way OS X, Haiku, and older versions of Mac OS and as far as I can remember Amiga work bench functioned.

I've never understood why linux systems, for a lack of a better understanding, treat the system and applications as one unit, and "merge" them when installing software, I understand there are supposedly advantages to this, and the "package management" model, however I see far more disadvantages than advantages... I feel that even for a "turbo-nerd poweruser" application portability, easy management of applications, human readable install and and data directories, self contained applications, zero install applications, and so on can be very useful help productivity by decreasing needless complexity, increasing functional usage and accessibility of the system, and allowing the user to spend less time fiddling about to get things going.

I explored using AppImageKit from http://portablelinuxapps.org/, but they implementation seems crude compared to what I've read about PNDs.

Anyway, I digress, I'm a pretty new to linux, and to be honest know very little programming, a smattering of C++ and NewtonScript.

When I cd into the pandora-libraries directory and attempt to compile with make, after having installed g++ it results in a compile error.

“minimenu/mmui.c:16:23: fatal error: SDL_image.h: No such file or directory

#include "SDL_image.h"

^

compilation terminated.

make: *** [mmui.o] Error 1”

From what I can gleen I appear to be missing a header file for the Standard DirectMedia Layer, or the header file, or the header file points to a library or source file I don't have... or something *shrug* I don't really know, I'm pretty noobish, whihc is why I am posting here, a semester of programming in highschool doesn't get you very far, if anyone can help it would be greatly appreciated.
 
either add /usr/include/SDL to your include dir list, or change that include line to "#include <SDL/SDL_image.h>"

Why do you want this working on x86 ?
 
either add /usr/include/SDL to your include dir list, or change that include line to "#include <SDL/SDL_image.h>"


Why do you want this working on x86 ?
I feel I spent a great deal of time writing a reasonable TL;DR grade preface to this, I'm sorry if my intentions were not clear.

Thank you for the prompt reply, however while your instructions are clear, I am not entirely sure how to do the former, and I am only assuming, the latter comments out the SDL header and relies on the SDL library being installed locally on the system in question, would I be right in this assumption?
 
Last edited by a moderator:
Sorry, I overlooked your introduction.

To fix your issue, just change the offending line to what I suggested, it will help the compiler find the header it's looking for.

About your target: I'm unsure the PND system is what you're looking for. The PND system have been designed around the specific needs of the pandora. and there is one the pandora have you dont : using removable devices. Beside, with all respect due to its inceptors, it have been coded in a rush and might not fit very well outside of the pandora. Beside there is no PND produced to date for x86 in mind. Finally, the PND system depend on the distribution behind the pandora. Trying to upgrade this OS have shown many issues with the PNDs (see .next threads)
 
Last edited by a moderator:
I feel I spent a great deal of time writing a reasonable TL;DR grade preface to this, I'm sorry if my intentions were not clear.
Don't worry, you did.

About your error: The error is coming from a file belonging to minimenu, not libpnd.

I don't know whether it was your intention to build minimenu alongside libpnd or how the makefile is set up, but let's just assume you also want minimenu.

In that case you will need all libraries minimenu is using, which seems to be SDL_image in this case.

So using the package manager of your Linux distro look for and install the following packages:

libsdl1.2-dev

libsdl-image1.2-dev

Then again, you might have already done that or don't want to compile minimenu to begin with, in which case you probably have to check the makefile and see whether there is a target which only produces libpnd.

This might help further:

http://pandorawiki.org/Libpnd_hub#Building_the_library

EDIT: Though sebt3 is right and building libpnd on a standard Linux desktop environment might not work without some poking around in the source code...
 
Last edited by a moderator:
Sorry, I overlooked your introduction.


To fix your issue, just change the offending line to what I suggested, it will help the compiler find the header it's looking for.


About your target: I'm unsure the PND system is what you're looking for. The PND system have been designed around the specific needs of the pandora. and there is one the pandora have you dont : using removable devices. Beside, with all respect due to its inceptors, it have been coded in a rush and might not fit very well outside of the pandora. Beside there is no PND produced to date for x86 in mind. Finally, the PND system depend on the distribution behind the pandora. Trying to upgrade this OS have shown many issues with the PNDs (see .next threads)


I'm aware of some of the issues, however it is the closest I have found to a system for making portable, self contained linux applications, that store their data in a reasonably consistent location.

Also, I frequently use removable storage for application storage on my systems.

Beyond this, I am more interested in the philosophy behind it, as quickly "cobbled together" as it may be, it's a reasonable and modern step forward for a linux system. I also quite enjoy the ability of the system to automatically display programs on the desktop or in the application menu that are stored on external media as they are plugged in.

The closest comparable system I could find is AppImageKit http://portablelinuxapps.org/, which as I have previously stated is rather crude.


I apologize if I'm not quite getting my reasoning across, the creator of the above application "packaging" system has some documentation that's in line with my reasoning that can help explain better than I can at the moment.

http://portablelinuxapps.org/docs/1.0/AppImageKit.pdf
 
I feel I spent a great deal of time writing a reasonable TL;DR grade preface to this, I'm sorry if my intentions were not clear.
Don't worry, you did.

About your error: The error is coming from a file belonging to minimenu, not libpnd.

I don't know whether it was your intention to build minimenu alongside libpnd or how the makefile is set up, but let's just assume you also want minimenu.

In that case you will need all libraries minimenu is using, which seems to be SDL_image in this case.

So using the package manager of your Linux distro look for and install the following packages:

libsdl1.2-dev

libsdl-image1.2-dev

Then again, you might have already done that or don't want to compile minimenu to begin with, in which case you probably have to check the makefile and see whether there is a target which only produces libpnd.

This might help further:

http://pandorawiki.org/Libpnd_hub#Building_the_library

EDIT: Though sebt3 is right and building libpnd on a standard Linux desktop environment might not work without some poking around in the source code...
Thank you foxblock for the help.


It can sometimes be quite frustrating for me posting in linux forums, people sometimes seem to be so caught up in the way things have been, and are done, that they have issues seeing any other way of doing them.
 
Last edited by a moderator:
Maybe my view is a little negative, but I would like to highlight this again:

Beside, with all respect due to its inceptors, it have been coded in a rush and might not fit very well outside of the pandora. Beside there is no PND produced to date for x86 in mind. Finally, the PND system depend on the distribution behind the pandora. Trying to upgrade this OS have shown many issues with the PNDs (see .next threads)
Probably to get it to work (and to get actual x86 programs bundled in that format) takes more skill (and time) than you seem to have judging from your question.And then it wouldn't even be a very good system. Lack of alternatives doesn't make it any better.

Probably one would be better off making a new system like that with some additional much needed features.
 
That's a little harsh - if someone expresses the desire to get something working, and has the ability to pull down the source and at least start to build it, that's some foundation to build on.

However, I should point out that if you're interested in it because of the way it automatically loads PNDs into the menu and desktop, I will note that all that's really doing is generating .desktop files and putting them in the correct folders.  Figuring out the correct folders is something I've tried to do in the past and failed, so kudos for that, but otherwise I'm more impressed by it's use of a union mount to mount the settings with the app, keeping the app read only.
 
Beside there is no PND produced to date for x86 in mind.
Oddly enough,  I don't really see this as an issue.     The PND system doesn't really need software pre-packaged as  PNDs to operate in the way Noobish wants.   In many cases it will be enough to extract the software into a folder in libPND's search path, and drop in an pxml file.  (and possibly build a run script for it.)

- Neelix

Edit:  It just occurred to me that my wording here makes it sound like one pxml file fits all situations which of course is not the case.  Each application made portable in this way would need its own hand-crafted pxml file.
 
Last edited by a moderator:
That's a little harsh - if someone expresses the desire to get something working, and has the ability to pull down the source and at least start to build it, that's some foundation to build on.
I knew it was, look at my first sentence... ;-)
And I certainly think that a pnd-like system could have it's uses. But it would need many more features than .pnd files currently have.

For example I have that idea floating around my head of such packages, which can depend on each other. You could also package up ROM files with some meta information, screen shots and an icon and have it say in the meta information that it needs such and such an emulator. Then package the emulators in a compatible format, so the system knows which emulators fit what the rom package needs. The ROM package can show up in the menu like any other games (you would need more menu categories to sort them, I guess. I don't know if the corresponding standard have something for that, if it doesn't one would need to invent new ones) and when you select it the system gives you a choice of what emulator for that system you want to use if you have more than one or just starts it up with that game if you have only one.

The rom packages couldn't be distributed legally that way, but you could have a pretty simple program which you can give rom files (or a directory containign rom files) and it checks some database for it's md5sum (or another checksum) and then adds the meta data and packages it up.

But some (partly intentional) restrictions of the .pnd format are just annoying me.
 
Back
Top