> There's one thing most developers don't mention in their build > instructions because it's so obvious to them: if they tell you that you > need to have package foo installed, you also need foo-devel installed as > that package contains the information needed to link the package to > programs. ?I've never understood why packages that are never used by > themselves and are only intended to be linked into other programs don't > have that in the main package, but that's the way it's generally done.
This is easy to explain. When compiling a program that uses a library, the compiler needs to know the "function declarations" for that library. Those declarations are in the source code for the library. As long as you are not compiling anything, you don't need any source code (source code takes a lot of disk space!). So it would be a huge waste of space to always include this. To make it easier the source code is usually split into "headers" and "source". The headers contain the above mentioned declarations, so someone compiling a program using a library will not need to install the full sources of the library but only the headers (takes a lot less space). But still, it would be a waste of disk space to always include this in the libraries, because it is only needed when compiling programs. Now, build instructions always say you need the headers, however different distributions package headers under different names. Many distributions call it "package name"-devel, but others have different names. So you need to know what your distribution call the header packages. The build instructions can not include all the possible package names because it depends on what distribution you are compiling under. /Peter
