30

I am trying to compile the simple C example from this tutorial on Ubuntu using GCC. What do I have to use as arguments for GCC to include the needed libraries for #include <libappindicator/app-indicator.h>?

1

7 Answers 7

103
-I<search path to include files>
-L<search path to the lib file>
-l<libname>
Sign up to request clarification or add additional context in comments.

3 Comments

indeed @debuti ... furthermore, seems that one can omit the space between the I or L and the searchpath, and put it all together like: -I<searchpath to include files>
That doesn't answer the question, only regurgitating the (incomplete) documentation. A proper answer would at least address possible naming conventions used to derived the actual argument. What should the actual argument be? -llibappindicator? -lappindicator? Something else?
Useful info for Fortran also, using for linking FFTW3 on pc and hpc. see www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html
23

Use the -l command line option. You can specify the library search path with the -L option. E.g:

gcc -o myprogram -lfoo -L/home/me/foo/lib myprogram.c

This will link myprogram with the static library libfoo.a in the folder /home/me/foo/lib.

3 Comments

That doesn't answer the question, only regurgitating the (incomplete) documentation. A proper answer would at least address possible naming conventions used to derived the actual argument. What should the actual argument be? -llibappindicator? -lappindicator? Something else?
@PeterMortensen How can I find the answer for this? I wonder why I need use -L/path/to/libname but -lname.
I found the lfoo -> libfoo.a convention a bit surprising/hard to decipher at first. You can also link using the full path to the lib file, ie -"/home/me/foo/lib/libfoo.a"
7

Use:

gcc example.c -o example  `pkg-config --cflags --libs appindicator-0.1`

pkg-config will fetch the required include and library flags for libappindicator and its dependencies. This assumes libappindictaor-dev package is already installed.

1 Comment

What is supposed to happen by that command line invocation? How do those backticklies work? Is there some exchange using standard input and standard output? Or not? In general, why is this necessary? Please respond by editing (changing) your answer, not here in comments (**** without **** "Edit:", "Update:", or similar - the answer should appear as if it was written today).
6

If you used apt-get, Synaptic Package Manager, etc. to get the appindicator library (vs. building it from source), did you only install the libappindicator1 package or did you also install libappindicator-dev to get the libappindicator header files? Linux packages very often have split the runtime libraries from the compile-time headers. That way people who only need the libraries to satisfy a dynamic link don't have to install unneeded headers. But since you're doing development you need those headers and therefore need the libappindicator-dev package as well.

2 Comments

I added the libappindictaor-dev package. What do I have to use with gcc as -l argument?
According to packages.ubuntu.com/hu/natty/i386/libappindicator-dev/filelist you need to use -I/usr/include/libappindicator-0.1/libappindicator
6

What I do is:

pkg-config --list-all | grep indicator

2 Comments

What is it supposed to do? An explanation would be in order. E.g., what is the idea/gist? From the Help Center: "...always explain why the solution you're presenting is appropriate and how it works". Please respond by editing (changing) your answer, not here in comments (without "Edit:", "Update:", or similar - the answer should appear as if it was written today).
Is it a response to manugupt1's answer?
1

You are trying to make a GTK app, and the previous solutions are as applicable anywhere like using the -l option and -I option,

However, for GTK applications, you may also use pkg-config which makes it easier as your paths can be predefined.

An interesting example can be found in http://developer.gnome.org/gtk/2.24/gtk-compiling.html

1 Comment

The last link is broken (404).
0

The default path for all c++ include files like library files and header files in ubuntu/linux are found in /usr/include/c++/11

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.