Nowe posty

xx Jak usunąć kilka dowiązań twardych jednym poleceniem. (3)
2019-06-14, 12:12:10
xx Skrypt sprawdzający miejsce na dysku (1)
2019-06-13, 13:55:00
xx Samba server (3)
2019-06-10, 17:01:44
xx Skrypt tworzący użytkownika (3)
2019-06-07, 17:11:55
xx Jaki serwis komp. we Wrocławiu (0)
2019-06-06, 12:39:23
xx serwer wydruku (1)
2019-06-04, 13:57:58
xx mod_security i roundcube (0)
2019-05-27, 14:27:03
xx Touchpad po pewnym losowym czasie przestaje reagować (33)
2019-05-27, 10:14:21
xx [ROZWIĄZANY] przygotowanie zeskanowanego pdf do OCR (6)
2019-05-24, 14:46:43
xx Przydatne Linki (1)
2019-05-23, 18:05:04

Autor Wątek: Bibilioteka allegro  (Przeczytany 8607 razy)

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 6
    • Zobacz profil
Bibilioteka allegro
« dnia: 2007-09-21, 13:00:05 »
Od jakiegoś czasu trochę programuję i postanowiłem napisać wreszcie coś, co można pokazać innym - jakas gierke, albo cokolwiek z grafiką, a nie jakis konsolowy programik. Kolega polecił mi bibliotekę allegro.

Instalowałem ją z i z paczki tar.gz, próbowałem też przez yasta, ale efekt jest taki, że wprawdzie kod
#include 
#include

int main()
{
return 0;
}
Się kompiluje, ale kod
#include 
#include

int main() {
    allegro_init();
    allegro_exit();
    return 0;
}
się nie kompiluje.

Po komendzie g++ main.cpp wywala mi
/tmp/cc84wRRk.o: In function `main':
main.cpp:(.text+0xa4): undefined reference to `_install_allegro_version_check'
main.cpp:(.text+0xa9): undefined reference to `allegro_exit'
collect2: ld returned 1 exit status
Po komendzie g++ main.cpp -lalleg otrzymuję
/usr/lib/gcc/i586-suse-linux/4.1.2/../../../../i586-suse-linux/bin/ld: cannot find -lalleg
collect2: ld returned 1 exit status
Mam openSUSE 10.2 i wersję gcc 4.1.2.

Co powinienem zrobić?

Offline Mariusz Adamski

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 6
    • Zobacz profil
Bibilioteka allegro
« Odpowiedź #1 dnia: 2007-09-21, 19:33:11 »
Spróbuj tak:
g++ main.cpp `allegro-config --libs --shared`

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 6
    • Zobacz profil
Bibilioteka allegro
« Odpowiedź #2 dnia: 2007-09-23, 11:56:56 »
Instalowałem to od nowa.
Tym razem przed ./configure dopisałem ./fix.sh unix. Nadal nie działało ale po dopisaniu `allegro-config --libs --shared` zaczeło mi się kompilować i działać.

Ściągnąłem sobie pierwszy z brzegu tutorial ze strony allegro http://www.glost.eclipse.co.uk/gfoot/vivace/vivall.zip
Programy jednoplikowe kompilują się (czasmi wprawdzie z ostrzeżeniami np.
0424.c:33: warning: ‘textout’ is deprecated (declared at /usr/local/include/allegro/alcompat.h:157)
, ale działają.

Jednak programów wieloplikowych nie udaje mi się skompilować, np. po próbie skompilowania prykładu ex_1_a z chaptera 5
g++ 051s.c `allegro-config --libs --shared`
wyskakuje mi
/tmp/ccjoOpsA.o: In function `shutdown()':
051s.c:(.text+0x9b): undefined reference to `circle_destroy(circle_t*)'
/tmp/ccjoOpsA.o: In function `output()':
051s.c:(.text+0xc7): undefined reference to `circle_erase(circle_t*, BITMAP*)'
051s.c:(.text+0xde): undefined reference to `circle_draw(circle_t*, BITMAP*)'
/tmp/ccjoOpsA.o: In function `process()':
051s.c:(.text+0xf9): undefined reference to `circle_update(circle_t*)'
/tmp/ccjoOpsA.o: In function `init()':
051s.c:(.text+0x294): undefined reference to `circle_init(int, int, int, int, int, int)'
051s.c:(.text+0x2d6): undefined reference to `circle_draw(circle_t*, BITMAP*)'
collect2: ld returned 1 exit status
Ściągałem też przykłądy z innych stron i działały (wszystkie były jednoplikowe). Oznacza to że coś jeszcze mam nie tak czy po prostu źle się zabieram to przedstawionego wyżej tutoriala?

Offline Kamil Kamiński

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 11
    • Zobacz profil
Bibilioteka allegro
« Odpowiedź #3 dnia: 2007-09-23, 12:15:03 »
Programy wieloplikowe kompiluje się po kolei, a potem łączy linkerem (g++ plik1.o plik2.o -o program {biblioteki})
Przykłady allegro są przeznaczone do kompilacji przez załączony Makefile, jeśli go nie ma - sprawdź, czy twoja dystrybucja nie udostępnia allegro-examples czy czegoś w tym stylu :)

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 6
    • Zobacz profil
Bibilioteka allegro
« Odpowiedź #4 dnia: 2007-09-23, 22:55:50 »
Ok, dzięki za pomoc :)


---- Ten wątek został podzielony ----
Wszystkie oddzielone posty znajdują się tutaj.
(Podziału dokonał użytkownik pkraszewski)