I'm trying to run the version of idjc in git (the 0.8.7 version crashes on me regularly and I wanted to see if the git version which has some really cool features I want would help).
Once I solved the issue of needing the latest mpg123 development libraries, it successfully built, but when I try to run it, I get a message "something bad happened" and a popup at the bottom of my screen that says "idjc failed to load /usr/local/lib/idjc.so.0". I don't know why (I build from source, but I'm not a hard core developer) but the only way to get the program to run was to use LD_PRELOAD to load /usr/local/lib/idjc.so.0 manually. ldconfig is ignoring the idjc.so files in /usr/local/lib. Should they perhaps be called /usr/local/lib/libidjc.so.* instead?
Any help would be appreciated because 0.8.7 is becoming unusable for me.
Thanks.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It would help if you told me which distribution you are using including version number since I cannot reproduce this using Ubuntu 12.04 on Virtual Box.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2012-07-06
Fedora 16 and 17 both exhibit this problem. If there is any other information you need, I will be glad to provide it.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2012-07-06
A couple of more notes.
I created a local.conf in /etc/ld.so.conf.d that contains /usr/local/lib in it. This helps it find the libshout-idjc shared libs, but not idjs.so.0.
In order to get IDJC to compile, I had to install mpg123 version 1.14.3 (problem with missing define MPG123_AUTO_RESAMPLE).
In order for configure to find the avcodec.h header file and the libshout-idjc headers and libraries, I issued the following commands prior to running configure.
so as you can see, the files are present, but ldconfig doesn't recognize them as libraries. I think (based on my reading of information at the tldp.org website) that this is due to the shared libraries not starting with "lib". I didn't take the time to figure out how to change the name of the generated shared library yet, but I suspect that if I could, my problem would be solved.
Thanks for the great software. I really do like it a lot and it just keeps improving. If you need more information, I will be glad to provide it.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I have the idjc.so module loading in Virtual Box with Fedora 16 with no special encouragement
idjc.so is not meant to be a shared library hence the lack of lib prefix and ldconfig ignoring it. The module pathname is hard coded at configure time and moving the module to another directory will prevent it from being found. idjc.so is not for use by any other software, the library version number will be 0.0.0 regardless of what version of IDJC. This puts it on the same basis as all the other components.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2012-07-08
OK… I just realized that the output of the various commands above were a mixture of my first attempt where I ran configure with no arguments (which would have put it into /usr/local/ as a prefix) and my second attempt, where I ran configure -prefix=/usr. I have since removed all the parts of idjc, pulled a fresh copy with git, and tried again with the same results, the idjc.so module is not being loaded. This is reproducable now on three different machines I have tried it on and while I could believe that one machine was hosed, all three? The only way I can get it to work is to use LD_PRELOAD.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Please try it again. A number of bugs have been fixed.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2012-07-09
Ok. Here is what I have found.
On Fedora 16, without many upgrades to various libraries (ffmpeg, mpg123, etc), the git version won't build at all. There were so many upgrades required to my system and interdependencies that I gave up trying.
On Fedora 17, the only thing that really needed upgrading was mpg123 to version 1.14.1 or higher.
The source of the "something bad happened" was that for some reason, the idjc.so module was complaining about an unresolved symbol, shout_shutdown. Here are the steps I used to discover this and the workaround I found.
Completely removed idjc from my system along with libshout-idjc.
Pulled a new copy from git repository and ran bootstrap.sh.
Changed directory to libshout-idjc and ran ./configure ; make ; make install which put it in /usr/local.
Added a local.conf file to /etc/ld.so.conf.d with /usr/local/lib in it and ran ldconfig -v -v (libshout-idjc shows up in the list).
Changed directory to the top level idjc directory and set the environment variables as follows:
export CPPFLAGS=-I/usr/include/ffmpeg
export SHOUTIDJC_LIBS=/usr/local/lib
export SHOUTIDJC_CFLAGS=-I/usr/local/include
Then ran ./configure ; make ; make install
Tried to run /usr/local/bin/idjc FAILED with message "something bad happened" in the terminal and "Could not load /usr/local/lib/idjc.so.0" via a notification popup.
Tried again to run with command LD_PRELOAD="/usr/local/lib/idjc.so.0 /usr/local/lib/libshout-idjc.so.3" /usr/local/bin/idjc WORKED
Tried again to run with command LD_PRELOAD="/usr/local/lib/idjc.so.0" /usr/local/bin/idjc FAILED with error message "unresolved symbol shout_shutdown in idjc.so.0"
Did a ldd /usr/local/lib/idjc.so.0 and noticed that there was no line for libshout-idjc. Shouldn't there be?
So now had an idea to try something different.
Uninstalled libshout-idjc from /usr/local and reconfigured with ./configure -prefix=/usr ; make ; make install
Unset variables SHOUTIDJC_LIBS and SHOUTIDJC_CFLAGS and did a make clean; ./configure ; make ; make install
Tried running /usr/local/bin/idjc (built against libshout-idjc installed in /usr instead of /usr/local) WORKED
So my conclusion is that for some reason, when libshout-idjc is installed in /usr/lib instead of /usr/local/lib, it works fine, but for some reason, even though ldconfig knows about libshout-idjc in /usr/local, idjc.so module doesn't look there for it, perhaps because the module doesn't think that it has a dependency on libshout-idjc.
I'm not an expert, so I may be completely off base, but there are my observations.
Thanks again for this great package. If you need further information, just let me know.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
If you installed libshout-idjc with -prefix=/usr then it should be in /usr not /usr/local as implied by those environment variables. Simply putting libshout-idjc in /usr/local will allow compile but at run time it might not link if you ran ldconfig without first having /usr/local/lib in your /etc/ld.so.conf file.
Could you post the output of the following commands?
$ ldd -r /usr/lib/idjc.so
$ cat /etc/ld.so.conf
$ find /usr -name \*idjc*
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It looks like you didn't run $ sudo ldconfig
Try it. Maybe it works now.
It's a longshot but here is one last command to copy and paste if the above didn't work. There must be /usr/lib in there on its own line for the ldconfig to work as desired. It would be really odd for it to be missing.
$ find /etc/ld.so.conf.d -type f -exec cat {''} \;
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
$ find /etc/ld.so.conf.d -type f -exec cat {''}\;
/usr/lib64/tracker-0.14
/usr/lib64/xulrunner
/usr/lib64/wine/
/usr/lib64/atlas
# Placeholder file, no vDSO hwcap entries used in this kernel.
/usr/lib64/mysql
# Placeholder file, no vDSO hwcap entries used in this kernel.
/usr/lib64/llvm
# Placeholder file, no vDSO hwcap entries used in this kernel.
/usr/lib/wine/
/usr/lib64/qt-3.3/lib
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
For some reason with sudo it still gives me Permission denied so I did it as root (performing 'su' first) and it worked (without any output) then sudo ldconfig again with no output
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I tried running: $ LD_PRELOAD=/usr/lib/idjc.so.0 /usr/lib/libshout-idjc.so.3 /usr/bin/idjc and I get: Segmentation fault (core dumped)
and when running: $ LD_PRELOAD=/usr/lib/idjc.so.0 /usr/bin/idjc I get: /usr/bin/python2.7: symbol lookup error: /usr/lib/idjc.so.0: undefined symbol: shout_shutdown
When doing: ldd /usr/lib/idjc.so.0 there is indeed no link/point to libshout
I guess I have the same problem as the other guy but unfortunately his solution doesn't help me.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thank you very much.
Unfortunately Fedora doesn't provide mp3 support unless you add it yourself by adding repositories such as rpmfusion and installing the required packages.
There is an old version of IDJC in the Fedora repo already but I have problem using it with mp3 files (I guess it has been built without mp3 support in first place and it can't be added at this point)
I submitted ticket to bugzilla.redhat.com regarding that issue but as I see the ticket was removed (I guess because I was asking about something involving mp3 support)
That is why I am trying to build IDJC on my own from source.
I don't remember if I mentioned it in any of the above posts but some time ago I built IDJC successfully but that was before the time it started requiring libshout-IDJC
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm trying to run the version of idjc in git (the 0.8.7 version crashes on me regularly and I wanted to see if the git version which has some really cool features I want would help).
Once I solved the issue of needing the latest mpg123 development libraries, it successfully built, but when I try to run it, I get a message "something bad happened" and a popup at the bottom of my screen that says "idjc failed to load /usr/local/lib/idjc.so.0". I don't know why (I build from source, but I'm not a hard core developer) but the only way to get the program to run was to use LD_PRELOAD to load /usr/local/lib/idjc.so.0 manually. ldconfig is ignoring the idjc.so files in /usr/local/lib. Should they perhaps be called /usr/local/lib/libidjc.so.* instead?
Any help would be appreciated because 0.8.7 is becoming unusable for me.
Thanks.
It would help if you told me which distribution you are using including version number since I cannot reproduce this using Ubuntu 12.04 on Virtual Box.
Fedora 16 and 17 both exhibit this problem. If there is any other information you need, I will be glad to provide it.
A couple of more notes.
I created a local.conf in /etc/ld.so.conf.d that contains /usr/local/lib in it. This helps it find the libshout-idjc shared libs, but not idjs.so.0.
In order to get IDJC to compile, I had to install mpg123 version 1.14.3 (problem with missing define MPG123_AUTO_RESAMPLE).
In order for configure to find the avcodec.h header file and the libshout-idjc headers and libraries, I issued the following commands prior to running configure.
export CPPFLAGS=-I/usr/include/ffmpeg
export SHOUTIDJC_CFLAGS=-I/usr/local/include
export SHOUTIDJC_LIBS=/usr/local/lib
ldconfig -v -v | grep idjc returns the following:
# ldconfig -v -v | grep idjc
ldconfig: Path `/usr/lib' given more than once
libshout-idjc.so.3 -> libshout-idjc.so.3.2.0
ls -l /usr/lib/idjc* returns the following:
# ls -l /usr/lib/idjc*
-rwxr-xr-x 1 root root 1041 Jul 6 16:28 /usr/lib/idjc.la
lrwxrwxrwx 1 root root 13 Jul 6 16:28 /usr/lib/idjc.so -> idjc.so.0.0.0
lrwxrwxrwx 1 root root 13 Jul 6 16:28 /usr/lib/idjc.so.0 -> idjc.so.0.0.0
-rwxr-xr-x 1 root root 740271 Jul 6 16:28 /usr/lib/idjc.so.0.0.0
so as you can see, the files are present, but ldconfig doesn't recognize them as libraries. I think (based on my reading of information at the tldp.org website) that this is due to the shared libraries not starting with "lib". I didn't take the time to figure out how to change the name of the generated shared library yet, but I suspect that if I could, my problem would be solved.
Thanks for the great software. I really do like it a lot and it just keeps improving. If you need more information, I will be glad to provide it.
I have the idjc.so module loading in Virtual Box with Fedora 16 with no special encouragement
idjc.so is not meant to be a shared library hence the lack of lib prefix and ldconfig ignoring it. The module pathname is hard coded at configure time and moving the module to another directory will prevent it from being found. idjc.so is not for use by any other software, the library version number will be 0.0.0 regardless of what version of IDJC. This puts it on the same basis as all the other components.
OK… I just realized that the output of the various commands above were a mixture of my first attempt where I ran configure with no arguments (which would have put it into /usr/local/ as a prefix) and my second attempt, where I ran configure -prefix=/usr. I have since removed all the parts of idjc, pulled a fresh copy with git, and tried again with the same results, the idjc.so module is not being loaded. This is reproducable now on three different machines I have tried it on and while I could believe that one machine was hosed, all three? The only way I can get it to work is to use LD_PRELOAD.
Please try it again. A number of bugs have been fixed.
Ok. Here is what I have found.
On Fedora 16, without many upgrades to various libraries (ffmpeg, mpg123, etc), the git version won't build at all. There were so many upgrades required to my system and interdependencies that I gave up trying.
On Fedora 17, the only thing that really needed upgrading was mpg123 to version 1.14.1 or higher.
The source of the "something bad happened" was that for some reason, the idjc.so module was complaining about an unresolved symbol, shout_shutdown. Here are the steps I used to discover this and the workaround I found.
Completely removed idjc from my system along with libshout-idjc.
Pulled a new copy from git repository and ran bootstrap.sh.
Changed directory to libshout-idjc and ran ./configure ; make ; make install which put it in /usr/local.
Added a local.conf file to /etc/ld.so.conf.d with /usr/local/lib in it and ran ldconfig -v -v (libshout-idjc shows up in the list).
Changed directory to the top level idjc directory and set the environment variables as follows:
export CPPFLAGS=-I/usr/include/ffmpeg
export SHOUTIDJC_LIBS=/usr/local/lib
export SHOUTIDJC_CFLAGS=-I/usr/local/include
Then ran ./configure ; make ; make install
Tried to run /usr/local/bin/idjc FAILED with message "something bad happened" in the terminal and "Could not load /usr/local/lib/idjc.so.0" via a notification popup.
Tried again to run with command LD_PRELOAD="/usr/local/lib/idjc.so.0 /usr/local/lib/libshout-idjc.so.3" /usr/local/bin/idjc WORKED
Tried again to run with command LD_PRELOAD="/usr/local/lib/idjc.so.0" /usr/local/bin/idjc FAILED with error message "unresolved symbol shout_shutdown in idjc.so.0"
Did a ldd /usr/local/lib/idjc.so.0 and noticed that there was no line for libshout-idjc. Shouldn't there be?
So now had an idea to try something different.
Uninstalled libshout-idjc from /usr/local and reconfigured with ./configure -prefix=/usr ; make ; make install
Unset variables SHOUTIDJC_LIBS and SHOUTIDJC_CFLAGS and did a make clean; ./configure ; make ; make install
Tried running /usr/local/bin/idjc (built against libshout-idjc installed in /usr instead of /usr/local) WORKED
So my conclusion is that for some reason, when libshout-idjc is installed in /usr/lib instead of /usr/local/lib, it works fine, but for some reason, even though ldconfig knows about libshout-idjc in /usr/local, idjc.so module doesn't look there for it, perhaps because the module doesn't think that it has a dependency on libshout-idjc.
I'm not an expert, so I may be completely off base, but there are my observations.
Thanks again for this great package. If you need further information, just let me know.
I downloaded IDJC 0.8.8 from https://sourceforge.net/projects/idjc/
and
libshout-idjc 2.3.0 from http://sourceforge.net/projects/idjc/files/libshout-idjc/libshout-idjc-2.3.0.tar.gz/download/
unpacked them and went into libshout-idjc's directory and in short I had few unsuccessfull tries to install it so I ended up removing both from everywhere and this is what I did:
after that I did
but IDJC couldn't find/see libshout-idjc so in IDJC's directory I did:
after that I continued with:
After it all finished I went and ran IDJC.
The window in which you need to choose a profile opened so I went and opened the default one
and I got:
IDJC Failed to open /usr/lib/idjc.so.0
Cannot continue.
I am using Fedora 17 x86_64 with KDE current version 4.9.2
I don't know what other information I need to provide.
If you installed libshout-idjc with -prefix=/usr then it should be in /usr not /usr/local as implied by those environment variables. Simply putting libshout-idjc in /usr/local will allow compile but at run time it might not link if you ran ldconfig without first having /usr/local/lib in your /etc/ld.so.conf file.
Could you post the output of the following commands?
$ ldd -r /usr/lib/idjc.so
$ cat /etc/ld.so.conf
$ find /usr -name \*idjc*
I did install libshout-idjc with -prefix=/usr and it is in /usr
Here's the output:
P.S. I am sorry, I meant in the directory of IDJC I did:
not:
It looks like you didn't run $ sudo ldconfig
Try it. Maybe it works now.
It's a longshot but here is one last command to copy and paste if the above didn't work. There must be /usr/lib in there on its own line for the ldconfig to work as desired. It would be really odd for it to be missing.
$ find /etc/ld.so.conf.d -type f -exec cat {''} \;
I did run $ sudo ldconfig actually.
And here's the output:
$ echo "/usr/lib" > /etc/ld.so.conf.d/01usrlib
$ sudo ldconfig
Hopefully that does it. The missing /usr/lib looks highly irregular assuming you posted the entire output.
$ echo "/usr/lib" > /etc/ld.so.conf.d/01usrlib
bash: /etc/ld.so.conf.d/01usrlib: Permission denied
and $ sudo ldconfig as the other times gives no output
P.S. Yes, I posted the entire output
Once again sorry for the double post but since I can't see the edit option.
Actually I just checked and there is no 01usrlib in /etc/ld.so.conf.d/
$ sudo echo "/usr/lib" > /etc/ld.so.conf.d/01usrlib
$ sudo ldconfig
For some reason with sudo it still gives me Permission denied so I did it as root (performing 'su' first) and it worked (without any output) then sudo ldconfig again with no output
But still IDJC when started gives me: IDJC Failed to open /usr/lib/idjc.so.0 Cannout continue
I tried running: $ LD_PRELOAD=/usr/lib/idjc.so.0 /usr/lib/libshout-idjc.so.3 /usr/bin/idjc and I get: Segmentation fault (core dumped)
and when running: $ LD_PRELOAD=/usr/lib/idjc.so.0 /usr/bin/idjc I get: /usr/bin/python2.7: symbol lookup error: /usr/lib/idjc.so.0: undefined symbol: shout_shutdown
When doing: ldd /usr/lib/idjc.so.0 there is indeed no link/point to libshout
I guess I have the same problem as the other guy but unfortunately his solution doesn't help me.
Any news on it?
There is some news. The Fedora maintainer is in the process of making an IDJC package. His Sourceforge user id is comzeradd. Perhaps he will help you.
Thank you very much.
Unfortunately Fedora doesn't provide mp3 support unless you add it yourself by adding repositories such as rpmfusion and installing the required packages.
There is an old version of IDJC in the Fedora repo already but I have problem using it with mp3 files (I guess it has been built without mp3 support in first place and it can't be added at this point)
I submitted ticket to bugzilla.redhat.com regarding that issue but as I see the ticket was removed (I guess because I was asking about something involving mp3 support)
That is why I am trying to build IDJC on my own from source.
I don't remember if I mentioned it in any of the above posts but some time ago I built IDJC successfully but that was before the time it started requiring libshout-IDJC
The latest version supports runtime linking to libmpg123. I hope that code stays in because then you will be able to use it.