Portál AbcLinuxu, 15. července 2025 14:49


Dotaz: C++ neumim kompilovat

2.1.2010 22:14 jirikon | skóre: 3
C++ neumim kompilovat
Přečteno: 910×
Odpovědět | Admin

Ucim se programovat v C++ (Mistrovstvi v C++) a taky si zkousim mimo jiné ... a chci napsat takovou malou aplikaci.

Mam nainstalovano:
j@j:~$ aptitude search gtkmm
p gtkmm-document
i libgtkmm-2.4-1
p libgtkmm-2.4-d
p libgtkmm-2.4-d
p libgtkmm-2.4-d
i libgtkmm-dev
p libgtkmm-doc
p libgtkmm-utils
p libgtkmm-utils
i A libgtkmm1.2-0c

Pokousim se kompilovat:
g++ /usr/share/doc/libgtkmm-dev/examples/statusbar/statusbar.cc

Pri kompilaci to na me vyplivne, pres 1000 eroru, posledni 2:
/usr/include/gtk--/box.h:172: instantiated from here
/usr/include/gtk--/base.h:398: error: ‘g_list_last’ was not declared in this scope

Instalaci balicku jsem provadel aptitude, tak predpokladam ze by mela zachovat zavislosti (xubuntu 8.04). Chybi mi jeste nejake knihovny?

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.1.2010 22:32 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zajímavější by byly spíš první chyby než poslední, protože ty velmi často bývají jen následné.
2.1.2010 22:58 jirikon | skóre: 3
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
In file included from /usr/include/gtk--/object.h:30, from /usr/include/gtk--/widget.h:32, from /usr/include/gtk--/container.h:27, from /usr/include/gtk--/box.h:28, from /usr/share/doc/libgtkmm-dev/examples/statusbar/statusbar.cc:1: /usr/include/gtk--/base.h:27:25: error: gtk--config.h: No such file or directory

Dival jsem se:

j@j:~$ find /usr/ -name gtk--config.h

/usr/lib/gtkmm/include/gtk--config.h
2.1.2010 23:13 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: C++ neumim kompilovat

V tom případě ten adresář přidejte do prohledávaných pomocí -I

  g++ -o statusbar -Wall -I /usr/lib/gtkmm/include statusbar.cc
2.1.2010 23:43 jirikon | skóre: 3
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
Pomuze to, ale jsou potom jeste dalsi kinhovny (asi 10):

/usr/include/gtk-1.2/gdk/gdk.h

da se to nejak udelat hromadne? narazite na to casto ze jsou knihovny nastrkane ruzne?
2.1.2010 23:48 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: C++ neumim kompilovat

Těch adresářů můžete přidat i víc. Jinak se k tomuto účelu většinou používá pkg-config:

  pkg-config --list-all | grep -i gtk
  pkg-config --cflags gtkmm-2.4
  pkg-config --libs gtkmm-2.4
Luboš Doležel (Doli) avatar 2.1.2010 23:55 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Míchá se vám tam dohromady GTK-- (zastaralé, řada 1.x) a GTKmm (řada 2.x)...
3.1.2010 00:35 jirikon | skóre: 3
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
Takze jsem chtel zkompilovat co uz je zastarale. Když bych chtel přidat libgtkmm-2.4-dev tak je to past zavislosti upgrade, remove a downgrade.
Jardík avatar 3.1.2010 00:36 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
Odpovědět | | Sbalit | Link | Blokovat | Admin
g++ -o statusbar -Wall -Werror `pkg-config --cflags --libs gtkmm-2.4` /usr/share/doc/libgtkmm-dev/examples/statusbar/statusbar.cc
Věřím v jednoho Boha.
3.1.2010 01:47 jirikon | skóre: 3
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zeptam se, jake knihovny se daji pouzit pro vytvoreni tray ikony? Pripadne co mi doporucite?
Jardík avatar 3.1.2010 03:13 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
GTK na to má funkce (teda spíš špatně použitelné "třídy"), Qt taky - obě jsou však k ničemu díky použití debilnímu XEmbed protokolu (jména funkcí z hlavy nevím, ale google pomůže). Nejlepší je využít dbus specifikaci nového systray protokolu KDE, a pokud nepoužíváte KDE (např. jako já, protože je pomalé) napsat si vlastní tray manager, který bude poslouchat a ukazovat ikony (tím nechci říct, že já jsem si ho psal). Mějte taky na paměti, že v případě přímého použití X systray protokolu (jak se jen přesně jmenuje) musíte poskytnout tak velké okno (a do něj si potom kreslíte), jaké si vyžádá systray manager, takže nedělat nějaké dementní hacky jako banshee, které ignoruje první požadavek systray manageru a pak s nějakými ikonu nezobrazuje (např. s bmpanel2)
Věřím v jednoho Boha.
3.1.2010 11:43 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
Hmm, proč použít standard když si můžu napsat vše sám :) co třeba vlastní X...
In Ada the typical infinite loop would normally be terminated by detonation.
Jardík avatar 3.1.2010 12:39 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
System tray protokol je, jak jsem řekl, společně s XEmbed (který používá) velký bastl (to samé platí o composite, ale budiž). Nikdy to nefungovalo pořádně, aplikace to nedodržují, každá aplikace si ikonu kreslí sama a pak to dopadá, jak to dopadá - jedna si nakreslí ikonku o velikosti min(system_tray_height, menu_icon_size), druhá o velikosti max(system_tray_height, menu_icon_size), třetí o velikosti min(system_tray_height, 16), čtvrtá o velikosti min(system_tray_height, menu_icon_size, 22) a poslední o velikosti max(system_tray_height, button_icon_size) a pak je každá jinak veliká, pořádně nefunguje průhlednost a musí se to řešit různými hacky. To už je lepší řešení ve Windows, kde je každá ikona v trayi 16x16 a víte, na čem jste, ikona bude vždy ostrá, protože s tím vývojáři počítají a ví, jakou ikonu připravit. V KDE a GNOME je to věčně rozmazaný, protože tam požadovaná ikona není a tak se škáluje, nebo se renderuje z SVG a v obou případech je to rozmazané a s SVG ještě k tomu pomalé.

Ale proč byste neměl dodržovat standard ... třeba tu KDE specifikaci brzo schválí a já nevidím důvod, proč to nepoužít. Je to 100x lepší než nějakej freedesktop system tray protokol, funguje to docela solidně. Jenom vám tu ikonu sice zatím zobrazí jen systray v KDE, ale třeba se v gnome někdy uráčí a implementují to taky.
Věřím v jednoho Boha.
3.1.2010 13:33 l4m4
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
Aha, takže cíle ,vytvořit systray ikonu` se dosahuje tak, že se to napíše pro jedno konkrétní prostředí -- kde to ovšem bude fungovat, teprve až implementuje protokol, který jsem se rozhodl použít. Zajímavé.
Jardík avatar 3.1.2010 20:43 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
Ano, pokud víc a víc programů začne používat tu novou specifikaci z KDE (která s ním není svázána, ani ho nějak nepotřebuje, jenom to potřebuje dbus, bez kterého se stejně žádné dnešní distro neobejde), tím dříve ji budou podporovat i jiná prostředí, dojde k její standardizaci a vývojářům i uživatelově oku se uleví.
Věřím v jednoho Boha.
4.1.2010 06:33 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
potřebuje dbus, bez kterého se stejně žádné dnešní distro neobejde
Aha, tak s to si strč někam.

Bez dbusu to šlo dřív, a bez dbusu to pude i dál. Nemám nic proti tomu, když si to (nebo něco jiného) nějaká předem omezená množina programů začne používat pro svoje interní účely, ale srát se všude s novátorskou premisou že "se bez toho žádné distro neobejde" je trochu mimo.
In Ada the typical infinite loop would normally be terminated by detonation.
Jardík avatar 4.1.2010 13:25 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
Tohle napíše jenom debil, co neví, o čem mluví.
Věřím v jednoho Boha.
4.1.2010 15:01 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
Ale vím, a toho org.freedesktop. mám plné zuby.
In Ada the typical infinite loop would normally be terminated by detonation.
Jardík avatar 4.1.2010 20:13 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
Tak pište třeba com.pht.
Věřím v jednoho Boha.
5.1.2010 07:24 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
Jenže mě sere ta celá konvence, kterou musel vymyslet nějaký úchyl, že každé jméno má před sebou deset přípon, nejlépe nějakou doménu pozpátku. Přitom každý ví, že to důležité má být na začátku a né na konci (nejlépe někde za hranicí 72 znaků, že? v tom se ty prasata úplně vyžívají).

A to vše pravděpodobně kvůli přehnanému strachu z jmenných kolizí? S trochou inteligence ve vybírání názvů by se tomu dalo předejít i bez krkolomných předpon. A když už, tak by to mohlo být "freedesktop" a "kde" a ne "org.freedesktop" a "org.kde", na co tam je do prdele to "org"? Stejně když si někdo založí namespace "com.kde" tak ho všichni sejmou.
In Ada the typical infinite loop would normally be terminated by detonation.
4.1.2010 16:06 Ash | skóre: 53
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
Imho ví o čem mluví, kdeže dbus :P
vlastikroot avatar 4.1.2010 20:24 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
Máš lepší návrh na tray protokol? Bez dbusu? Čistej, funkční, pěknej, bez prasáren typu XEmbed? Co máš proti dbusu? Však meziaplikační komunikace se hodí, navíc se to používá naskrz v KDE4 i GNOME, aplikace dodržují některá api (např. multimediální přehrávače). Dbus patří snad mezi nejmíň problémový věci v modernim distru (za všecko muže ten balast kolem - HAL, consolekit, policykit, devicekit ...). Moderní distro, pokud jde o desktop, se IMHO bez dbusu opravdu neobejde.
We will destroys the Christian's legion ... and the cross, will be inverted
5.1.2010 07:44 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
Abych se přiznal, já se o systray zajímám jen z toho hlediska, že s ním imrvere něco nefunguje. Já reagoval pouze na to, že se distro neobejde. Ale obejde. Na meziaplikační komunikaci existovaly již od počátku věků v unixu mechanizmy, které fungují a vždy fungovaly. Co brání vývojářům použít jeden z nich?

Dbus je samozvaná slátanina, která znovu vynalézá tyto mechanizmy se samozvanými pravidly, kde se totálně rozchází s celou unixovou tradicí, a všechny ty kity kolem vznikly jako další a další nově vynalezená kola, když si uvědomili, že na tom starém způsobu něco bylo.

Proč nemůžu normálně poslat příkaz audio přehrávači na soket /home/pht/.audioplayer nebo bluetooth démonovi do /var/run/bt ? Proč musím hledat někaké org.bluezy? Není to redundantní jmenný prostor?

Když už tady je tak "pokročilá technologie" proč neexistuje k těm věcem nějaké normální rozhraní s helpem? Nejvíc mě pobavilo když jsem si chtěl v KDE4 nastavit dálkové ovládání. Je tam nějaký dialog který obsahuje asi 3 předvolené akce a pak je tam tlačítko urob si sám přes dbus ™ kde se člověk prokliká přes nějaké org.blabla.introspectable.wtff??Qint,Qint? [ano, všichni víme co to jsou integery ale my musíme mít Q integery!] ... zkrátka možná se chudák uživatel dostane i k té akci, kterou chce na to tlačítko naprogramovat, pokud se z toho předem nezblázní, načež na konci není žádné "chci tuto akci" ale patrně musí ty hovadiny růčo přepsat do předem připravených input boxů a ještě je rozdělit na třídu, objekt, funkci, ... :D

Když padne dbus daemon tak padne celý desktop, tomu říkáte pokrok?
In Ada the typical infinite loop would normally be terminated by detonation.
default avatar 5.1.2010 10:34 default | skóre: 22 | Madrid
Rozbalit Rozbalit vše Re: C++ neumim kompilovat
:-D

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.