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ć?
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?