views:

395

answers:

4

My question is very basic, as is my knowledge right now.

I'm a long-time Linux user, but have only recently taken a major interest in programming. I see that many popular applications in the Ubuntu repositories have -dev packages (e.g. pidgin-dev in addition to pidgin). My question is this:

What is in these packages? How does downloading pidgin-dev help one to develop for Pidgin? Is it as simple as a dependency check for the tools necessary to create the plugins for the given application?

I was hoping there would be a substantial amount of documentation in the -dev packages, but if there is, I can't figure out how to access it. I'm thinking of something like a man-page, but useful for editing code.

Any and all advice more than welcome!

+1  A: 

The -dev packages usually contain C header files and statically compiled versions of library files (.a extension). Sometimes they contain additional documentation and examples, or even helper applications.

caf
+1  A: 

The *-dev packages most often contain the headers related to a library's interface. Next most common are package-config files (*.pc) describing build options and staticly linked libraries.

In general, if you want to know the contents of a package you have installed, 'dpkg -L pkgname' will get you that. The 'apt-file' program can tell you the same for any package in the repositories.

Novelocrat
A: 

This package contains the headers and other development files not included in the main pidgin package. Install -dev if you wish to compile your own plugins.

zdmytriv
+3  A: 

(disclaimer: I'm familiar with Debian but not Ubuntu, so although it is almost certain that everything I write below applies, there's is a chance it's not.)

One more item in the *-dev package is the /usr/lib/lib*.so link. The libfoo0 package will install the file /usr/lib/libfoo.so.0.0, while libfoo-dev installs the links /usr/lib/libfoo.so.0 and /usr/lib/libfoo.so. This is the mechanism that allows you to have libfoo0 and libfoo1 installed simultaneously, so that software requiring the old library can co-exist on the box with software using the new library. When you install libfoo-dev, any software that is compiled will follow the *.so link and link against the version of the library referenced by that link.

William Pursell