Error compiling MOCP

I have moc-2.5.0-alpha3, I want to install moc-2.5.0-alpha4. I added 'deb xxx unstable main' and 'deb-src xxx unstable main' to the repositories in my Ubuntu machine and refreshed the sources, but the new MOCP still doesn't turn up.

So I went for the source, but it won't compile:

What's wrong?



you seem to be missing a libtool header as shown on line 113: checking for ltdl.h... no
As a result, on line 382, there is: decoder.c:21:18: error: ltdl.h: No such file or directory
Check if you have the libltdl-dev package installed.
I think the configure script should halt when it's missing this header though.

Ok, I installed the libltdl-dev package, tried again and it compiled. But when I run mocp, I get this error now:

FATAL_ERROR: No decoder plugins have been loaded!
Exit 2


Any suggestions?


Did you notice at the end of the configure stage you get a summary of decoder libraries found among other things? This line is empty in the original log you posted (a warning about this might be nice in the configure script). You will have to install developer versions for all libraries you want moc to use (ogg, flac, mp3, ...). While you're at it, you might also want to install developer libraries for alsa and/or jack which are preferred over oss for most distros.

Well, I think that was not clear at all. I just saw those bunch of lines saying "creating decoder this, creating decoder that."

Anyway, I followed your advice and installed 25MB of "dev" files that I will never need for anything else... :-\ And it still fails:

Sigh. What is it this time?

Not sure why you get the error. In line 377 you can see libtool includes a number of directories to search for files, including ".)" and a bit later "(/bin". It is very unlikely you have directories named so, and it seems something is messed up. You should try to run ./configure in a clean environment: run "make clean" or unpack moc again to a new directory. Hope this helps


I have all those directories. They are in my path, in my tcsh shell.

And I always unpack the moc tarball afresh for every compilation.

I did it again, now in Bash. See if this environment looks "cleaner" to you. At any rate, it fails:

If you can't troubleshoot this, I will give up. Way too hard.

Hi, I don't have a solution, but the problem is in your directory names. The characters ")" and "(" probably have to be escaped for bash to recognize them, and libtool apparently does not handle this correctly. Did you create these folders yourself? Standard installations should not produce directories with such names. Do they really contain important things? You could try removing them from your libtool path and see if compilation works.

OK, part of the problem is solved. It was my "path" variable. It is set in my tcsh shell:

setenv path '(/bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin /usr/games)'

The parentheses should not get in the way:

luc[265-0]/downloads> echo $path
/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /usr/games

But they were interfering somehow, even when I logged in with Bash. I have no idea. I cleaned that variable:

$ export path=''

And that fixed it. I got mocp to compile. But it's not working. First, I could only run mocp from Bash. On tcsh, it would run and print:

FATAL_ERROR: No decoder plugins have been loaded!
Exit 2

The 'which' command tells me that the path to the program is /usr/local/bin/mocp, both in Bash and tcsh. But Bash would run it, tcsh would get the strange error.

Then I realized I still had the old mocp 2.5.0 alpha 3 installed. So I removed it and did the whole compilation and installation again, on Bash. Now I get...

FATAL_ERROR: No decoder plugins have been loaded!

...both in Bash and tcsh!

Here is the output of the latest attempt:

Congratulations! That was a major step forward indeed. The devil is always in the details.
The make process usually runs in its own shell, normally sh, not bash or tcsh. That explains the behaviour of your path variable.

The error you get now is most likely because there is something left over from your old install, probably the configuration settings in your home dir (~/.moc). Try deleting/moving this dir and see if it helps.

Well, I renamed ~/.moc to something else. It compiled. Latest output here:

But I still get the same error:

FATAL_ERROR: No decoder plugins have been loaded!

Oh, except now it seems it runs fine when I am root. Either in Bash or tcsh, it runs when I am root, not when I am ordinary user. Major showstopper.

/usr/local/bin/mocp has 755 permissions. Well, it runs, it just fails to load decoder plugins. So I assume those have incorrect permissions. What are they? Where are they?

OK, I fixed it:

# chmod 755 /usr/local/lib/moc/decoder_plugins
# chmod 755 /usr/local/lib/moc
# chmod 755 /usr/local/share/moc/themes
# chmod 755 /usr/local/share/moc

This version of mocp has been around for at least ONE YEAR. How does no one see something like that?!!

Thanks, lenoch, Maarten.