Jak dołączyć potrzebną bibliotekę C przy użyciu gcc?
Próbuję skompilować prosty przykład C z tego tutoriala Na Ubuntu używając gcc. Co muszę użyć jako argumentu, aby gcc zawierało potrzebne biblioteki dla #include <libappindicator/app-indicator.h>
?
6 answers
Jeśli użyłeś apt-get
, Synaptic Package Manager
, itd. aby uzyskać bibliotekę appindicator
(a nie budować ją ze źródła), zainstalowałeś Tylko pakiet libappindicator1
czy zainstalowałeś również, aby pobrać pliki nagłówkowe libappindicator
? Pakiety linuksowe bardzo często dzieliły biblioteki uruchomieniowe od nagłówków w czasie kompilacji. W ten sposób osoby, które potrzebują tylko bibliotek, aby zaspokoić dynamiczne łącze, nie muszą instalować niepotrzebnych nagłówków. Ale ponieważ robisz rozwój potrzebujesz tych nagłówków i dlatego potrzebujesz libappindicator-dev
paczka również.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-09 13:36:50
-I <searchpath to include files>
-L <searchpath to the lib file>
-l<thelibname>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-16 11:42:29
Użyj opcji linii poleceń -l
. Możesz określić ścieżkę wyszukiwania biblioteki za pomocą opcji -L
. Np.:
gcc -o myprogram -lfoo -L/home/me/foo/lib myprogram.c
Spowoduje to połączenie myprogram
ze statyczną biblioteką libfoo.a
w folderze /home/me/foo/lib
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-16 11:48:34
To co robię to:
pkg-config --list-all | grep indicator
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-06 12:41:59
gcc example.c -o example `pkg-config --cflags --libs appindicator-0.1`
Pkg-config pobierze wymagane flagi include i lib dla libappindicator
i ich zależności. Zakłada to, że pakiet libappindictaor-dev
jest już zainstalowany.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-02 07:34:58
To, co próbujesz tutaj zrobić, to zrobić aplikację gtk, powyższe rozwiązania są odpowiednie wszędzie podobnie jak użycie opcji-l I-i,
Jednak dla aplikacji GTK można również użyć pkg-config, które ułatwiają, ponieważ ścieżki mogą być predefiniowane
Http://www.freedesktop.org/wiki/Software/pkg-config
Ciekawy przykład można znaleźć tutaj http://developer.gnome.org/gtk/2.24/gtk-compiling.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-16 12:03:55