64-bit compilation issues (AMD64/EMT64) XBMC for Linux
#1
Sad 
I was wondering if anyone has gotten this to compile (and run) on a 64-bit install of Ubuntu?

I seem to be having trouble. It fails with ambiguous overloaded operator[] for CStdStringW.

I have successfully compiled it (and run) on another machine with 32-bit Ubuntu (as well as the virtual machine setup a couple of days ago).

It looks great and I can't wait to help out. Either way I've got a box that runs it pretty good.
Reply
#2
I have the same problem, seems from what little I know of C++, its eminating from GUIFont.cpp.

I commented out a few lines realating to 'font scroll' (all I can remember off hand) and the compilation stoped erorring there (but obviously errored out later). If only I had more experience with C++ (been 9 years since CS 101).

If you read the thread below, I originaly thought this was becouse I couldn't get lib-stretch to install... silly me.

I'm just waiting patiently for someone with skill enough to fix the issue to discover it.

If someone wishes to tackle the issue, I'd be more then willing to help in any way I can. (understand you're dealing with someone who mostly deals in VBscript or Bash scripting, not 'real' programing Smile )

-Rupert
Reply
#3
Well I will ultimately look at it because I want it to compile on my main machine where I do most of my work, but I wanted to make sure I could actually get it to compile elsewhere and run first.

Hopefully someone that has the codebase knowledge can chime in, otherwise I guess I found the first thing I can work on. Smile
Reply
#4
Looks like there are tonnes of reasons why it won't compile 64-bit. Plenty of places assume that "unsigned long" is the same size as "unsigned int", which is a bit unfortunate. And even after it compiles, I shudder to think of actually getting it to *work* 64-bit.

I wouldn't mind spending some time to make it work on amd64, but can any more knowledgeable devs comment on whether this fits with any long term goals for XBMC? Obviously, it'll have to keep working on 32-bit platforms, but if work were to be done here, would it be merged?

Anyone spent any thoughts on a game plan? e.g., defining consistent, purposefully sized types for things?
Reply
#5
it would certainly be merged
Reply
#6
good stuff. i'll have a look at it. when i first downloaded xbmc for linux, i tried building 64-bit as well, and was quite disappointed. Smile

as far as I can tell, the main compilation problems are that any kind of size_type becomes 64-bit. this affects CStdString::operator[], and things like std::min getting one side 32-bit and the other 64-bit. a number of places cast pointers to int. there's once place (config.h in dvdnav) that redefines (unnecessarily?) standard types like uint64_t.

the first couple won't be hard.. expect patches soon to fix those. the next couple, not so sure. could have a nasty snowball effect so i'll want to tackle those separately.
Reply
#7
if you can.. things like that would be nice if they where done on trunk actually. as there will likely be a whole lot of minor things.

that would require windows thou Smile
Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.


Image
Reply
#8
http://sourceforge.net/tracker/index.php...tid=581840

Posted some patches to get xbmc compiling on 64-bit linux. Some of them require review, especially for how they might affect xbox builds. Please advise.

Note that I haven't yet gotten xbmc to link on 64-bit. The various static libraries that are prebuilt for i386 are preventing that so far. Can anyone offer any thoughts on the best way to resolve that problem?
Reply
#9
build x86-64 versions..

source for all them libs are in svn, either sitting in the xbmc/lib directory or compressed in docs/
Reply
#10
ok, i'll dig them up.

would the 64-bit static libs be checked in to the xbmc tree like the i486 ones are?
Reply
#11
Yes. We need to check-in also the modified rar/tar.gz files with updated Makefiles or instructions. Thanks for your help!
Reply
#12
One thing to note about AMD64: all the shared libraries MUST be compiled with -fpic. When compiling 32-bit libraries on Intel, it is not a must.

Also if we ever do decide to include mplayer it will be an issue since mplayer CANNOT be compiled with -fpic at this point (and mplayer devs don't really care about it). So mplayer compiled as shared library for AMD64 is a no-no. Not relevant at this stage but thing to remember.
Reply
#13
Question 
In my continuing quest to produce a 64-bit build of xbmc, I've become a bit stuck getting libGoAhead to build.

The makefile in the libGoAhead.rar file includes the nonexistent files make.dep and $(TARGET)/$(OS)/make.$(CUT). It has no rules, and make therefore isn't able to build anything.

I'm able to get most of the library compiling by cobbling together my own gcc command-line, but the way this archive is, even the i486 lib wouldn't have built. Anyone care to point me in the right direction for that? Am I missing something major? How was the i486 lib built?

I've been able to hack past this issue by making a stub library of empty functions, and I've got XBMC linking 64-bit. Very little works, however, so there's not much to show off yet.
Reply
#14
I couldn't pull up any search results to answer this, so please forgive me if this was answered. I'm using 7.10, and already tried updating to 8.04, boy is that not quite ready after throughout testing, so i put 7.10 back on (300gig USB external.) but wanted to ask if this works with ubuntu 64bit edition. Only because wine works great on it, and all my apps i use do also, and thought about reinstalling the 64bit version on it this time.
Also since i'm getting pretty comfortable already with doing things and in general with Ubuntu (8.04 screwed my whole RAID setup with XP and Vista on it dual-boot, somehow wrote something to grub in the update process, as i couldn't boot to those OS's anymore, and couldn't even repair either using CD's, so i was forced to only have Ubuntu to use for a week til i fixed all that mess, 100% off-work time [7-8 hours] x 7 days + High Learning Curve = a lot of time learning and getting adjusted.) But i'm totally cool with using 32bit still if LinuxBMC isn't quite compatible with the 64bit version Ubuntu.
I remember a mentioning in either the forums or the changelog about something added or fixed to compile on 64bit, but i'd rather be sure from someone's personal experiences they had so far. Thanks guys. It works great for me so far with trying everything. I made a script to execute updating, making a new build, then of course a separate desktop shortcut to run it, and a custom icon i made for it to match.
Reply
#15
I know the wiki and info about it being for 32bit, but i do remember recently that someone added in the source that it could compile now or something, i just want to be sure if i read that correctly.
Reply

Logout Mark Read Team Forum Stats Members Help
64-bit compilation issues (AMD64/EMT64) XBMC for Linux0