These days, I was busy learning Python, I feel it simple and funny.
My system is a FC6, the default Python is of version 2.4, I wanted to update it to the newest 2.5.
Python depends on Tcl/Tk, so I first install them. There will be two libraries: libtk8.5.so and libtcl8.5.so, they are both the newest version.
Then install Python, I configured it by these options:
./configure --prefix=/apps --with-tk --with-tcl-library=/apps/lib --with-tcl-include=/apps/include --with-tk-library=/apps/lib --with-tk-include=/apps/include
While making, there appears an error:
*** WARNING: renaming "_tkinter" since importing it failed: libtk8.5.so: cannot open shared object file: No such file or directory
I was very confused, because I had specified the location of tk library, while can't the lib be found.
This message appeared after a "gcc" command like this:
building '_tkinter' extension
gcc -pthread -fPIC -fno-strict-aliasing -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -DWITH_APPINIT=1 -I/usr/X11/include -I. -I/software/python/Python-2.5/./Include -I/apps/include -I./Include -I. -I/usr/local/include -I/software/python/Python-2.5/Include -I/software/python/Python-2.5 -c /software/python/Python-2.5/Modules/_tkinter.c -o build/temp.linux-i686-2.5/software/python/Python-2.5/Modules/_tkinter.o
gcc -pthread -fPIC -fno-strict-aliasing -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -DWITH_APPINIT=1 -I/usr/X11/include -I. -I/software/python/Python-2.5/./Include -I/apps/include -I./Include -I. -I/usr/local/include -I/software/python/Python-2.5/Include -I/software/python/Python-2.5 -c /software/python/Python-2.5/Modules/tkappinit.c -o build/temp.linux-i686-2.5/software/python/Python-2.5/Modules/tkappinit.o
gcc -pthread -shared build/temp.linux-i686-2.5/software/python/Python-2.5/Modules/_tkinter.o build/temp.linux-i686-2.5/software/python/Python-2.5/Modules/tkappinit.o -L/usr/X11/lib -L/apps/lib -L/usr/local/lib -ltk8.5 -ltcl8.5 -lX11 -o build/lib.linux-i686-2.5/_tkinter.so
So at first I was very comfirmed that this error was given out by the gcc compiler, and in my experience "No such file or directory" was always a gcc's "product".
In several hours I didn't know why, I couldn't find any error in Makefile and setup.py. Finally I compiled these two files and made them into .so lib one by one in shell. No problem!
Then I thought the reason was that the error message is not given by gcc but some other part of the install script, the script didn't know I had installed tk and tcl in my personalised directory /apps/lib, so it couldn't find the libs. But the script should support the default path /usr/lib, because this is the most common used path, the script has no reason missing it. So I copy libtk8.5.so and libtcl8.5.so to /usr/lib, and made. Making passed successfully.
THE REASON IS THAT THE INSTALLATIOIN SCRIPT CAN'T SEARCH LIB PATH OTHER THAN /usr/lib , OR I DIDN'T SPECIFY THE CORRECT LIB PATH .
My system is a FC6, the default Python is of version 2.4, I wanted to update it to the newest 2.5.
Python depends on Tcl/Tk, so I first install them. There will be two libraries: libtk8.5.so and libtcl8.5.so, they are both the newest version.
Then install Python, I configured it by these options:
./configure --prefix=/apps --with-tk --with-tcl-library=/apps/lib --with-tcl-include=/apps/include --with-tk-library=/apps/lib --with-tk-include=/apps/include
While making, there appears an error:
*** WARNING: renaming "_tkinter" since importing it failed: libtk8.5.so: cannot open shared object file: No such file or directory
I was very confused, because I had specified the location of tk library, while can't the lib be found.
This message appeared after a "gcc" command like this:
building '_tkinter' extension
gcc -pthread -fPIC -fno-strict-aliasing -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -DWITH_APPINIT=1 -I/usr/X11/include -I. -I/software/python/Python-2.5/./Include -I/apps/include -I./Include -I. -I/usr/local/include -I/software/python/Python-2.5/Include -I/software/python/Python-2.5 -c /software/python/Python-2.5/Modules/_tkinter.c -o build/temp.linux-i686-2.5/software/python/Python-2.5/Modules/_tkinter.o
gcc -pthread -fPIC -fno-strict-aliasing -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -DWITH_APPINIT=1 -I/usr/X11/include -I. -I/software/python/Python-2.5/./Include -I/apps/include -I./Include -I. -I/usr/local/include -I/software/python/Python-2.5/Include -I/software/python/Python-2.5 -c /software/python/Python-2.5/Modules/tkappinit.c -o build/temp.linux-i686-2.5/software/python/Python-2.5/Modules/tkappinit.o
gcc -pthread -shared build/temp.linux-i686-2.5/software/python/Python-2.5/Modules/_tkinter.o build/temp.linux-i686-2.5/software/python/Python-2.5/Modules/tkappinit.o -L/usr/X11/lib -L/apps/lib -L/usr/local/lib -ltk8.5 -ltcl8.5 -lX11 -o build/lib.linux-i686-2.5/_tkinter.so
So at first I was very comfirmed that this error was given out by the gcc compiler, and in my experience "No such file or directory" was always a gcc's "product".
In several hours I didn't know why, I couldn't find any error in Makefile and setup.py. Finally I compiled these two files and made them into .so lib one by one in shell. No problem!
Then I thought the reason was that the error message is not given by gcc but some other part of the install script, the script didn't know I had installed tk and tcl in my personalised directory /apps/lib, so it couldn't find the libs. But the script should support the default path /usr/lib, because this is the most common used path, the script has no reason missing it. So I copy libtk8.5.so and libtcl8.5.so to /usr/lib, and made. Making passed successfully.
THE REASON IS THAT THE INSTALLATIOIN SCRIPT CAN'T SEARCH LIB PATH OTHER THAN /usr/lib , OR I DIDN'T SPECIFY THE CORRECT LIB PATH .