分类: LINUX
2010-01-04 17:03:39
Installed pycurl-7.19.0 but when used, got this error: Fatal Python error: pycurl: libcurl link-time version is older than compile-time version. Googled it immediately of course. This post seems useful but no detail info of how, so helpless to a newbie like me.
At least I know it’s the damn version issue. How about installing the latest cURL lib? Tried but failed. However, I noticed the following msg after installation:
If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' |
I followed the first suggestion and added my installation dir “/usr/local/lib” to LD_LIBRARY_PATH, and, HOORAY, it worked.
Remaining question: “/usr/local/lib” and “/usr/lib” are default installation dir for most libs, why they are not searched by default? Really weird of lib/include path issue in Linux.
VERSION ISSUE again. When I resolved libcurl version issue, I got another more: ImportError: /usr/local/lib/python2.6/site-packages/libxml2mod.so: symbol xmlFirstElementChild, version LIBXML2_2.7.3 not defined in file libxml2.so.2 with link time reference. Google, google, google, and helped me: some expert asked “This sounds like your may have some other (old) libxml2.so.2 filegetting in the way”. Actually I got “libxml2.so.2.6.32” under /usr/lib, and “libxml2.so.2.7.6” under /usr/local/lib. Seems the former old one is provided by Debian. So the solution is rather simple now: put /usr/local/lib before /usr/lib in my LD_LIBRARY_PATH in ~/.bashrc.
Remaining question: Is it better to always put /usr/local/lib before /usr/lib?