"syed raza" wrote: > I want to compile a program of simple Matrix using gcc and > GSL.
Ciao, in what follows I assume you are a beginner with GNU+Linux platforms, so bear with it if I write stuff you already know. There are a lot of things to say and it is difficult to have this exchange through email; anyway, let's give it a try. If you do a Google search for "how to compile and install a program under linux", you will find a number of tutorials about how to compile and install programs; I suggest that you read some of them. Now for the specific task of compiling and installing the GSL: first, you should unpack the archive "gsl-1.9.tar.gz" in a temporary directory. On my system, my user name is "marco", so my home directory pathname is "/home/marco"; in everything below I use this pathname, you should use your own home directory pathname. When I build a GSL package I do it in the temporary directory "/home/marco/var/build". It goes like this, assuming that "gsl-1.9.tar.gz" is a file under "/home/marco": $ cd /home/marco $ mkdir -p var/build $ cd var/build $ tar --extract --gzip --verbose --file=/home/marco/gsl-1.9.tar.gz $ cd gsl-1.9 $ ./configure --disable-static --enable-shared $ make if everything works the GSL is configured and built by the last two commands; we can verify that the building worked by running the tests: $ make check you should see a lot of compiler invocations and messages like: ============= 1 test passed ============= meaning that a test program was run and successfully executed. Running the tests may take some minute. Now we have to install the GSL; we configured it with the default setting for the destination directory, so it will be installed under the "/usr/local" directory hierarchy. First, you have to make sure that "/usr/local" is in a hard disk partition mounted with writable access permissions. For example, on my system running the following command: $ mount | grep /usr/local prints: /dev/sda11 on /usr/local type ext3 (rw,nodev,errors=remount-ro) the first "rw" in the parentheses shows that "/usr/local" is writable. There is too much to be told about how your system may be configured; so, let's assume that your "/usr/local" is writable, and come back to it only if the installation fails. To install GSL you need to acquire root permissions, this means use the "su" program or "sudo" program. "sudo" needs to be configured, while "su" should work for you; let's use "su". If you do a Google search on "how to use su on linux" you should find some tutorials on it. Basically to install GSL you should do: $ su $ make install $ /sbin/ldconfig $ exit the "su" program asks you to type in the "root" password; do it and "su" will run a shell under "root" privileges; run "make install" and "ldconfig" and finally type "exit" to exit the privileged shell. The location of "ldconfig" may vary on your Linux system, I do not know where Mandriva places it; it may be in one of the following locations: /sbin/ldconfig /usr/sbin/ldconfig or some other place. Find it and run it with "root" privileges. Now, on to compiling a program linked to the GSL library. The source file of your program is called "matrixExp.c", fine; first put it under a temporary directory: $ cd <where the file is> $ mkdir /home/marco/var/tmp $ mv matrixExp.c /home/marco/var/tmp $ cd /home/marco/var/tmp Your program looks fine to me, meaning that I successfully compiled and run it on my system with the commands below. When linking to the GSL library, you have to tell the compiler how to use it; the GSL package installs a script "gsl-config" which we can use to acquire the informations we need. You can try to run this: $ gsl-config --cflags --libs on my system it prints: -I/usr/local/include -L/usr/local/lib -lgsl -lgslcblas -lm these are all options to be put on the command line of GCC; so let's try: $ gcc -I/usr/local/include -L/usr/local/lib -lgsl -lgslcblas -lm -o matrixExp matrixExp.c it should compile the program and create an executable named "matrixExp"; equivalently, using the features of the shell you are running you could do: $ gcc $(gsl-config --cflags --libs) -o matrixExp matrixExp.c To run the program: $ ./matrixExp which prints: differences = 0 (should be zero) I hope all of this helps you; to have further help, you can reply to me by private email. -- Marco Maggi _______________________________________________ Help-gsl mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-gsl
