Проблемы с библиотеками
Модератор: Модераторы разделов
-
Earlind
- Сообщения: 10
- ОС: SimplyMepis
Проблемы с библиотеками
Здравствуйте. У меня проблема в том, что ГНУ наотрез отказывается использовать функции любых библиотек. Вот например пишет:
gcc main.cpp
main.cpp:14:2: warning: no newline at end of file
/tmp/ccqUVw0g.o: In function `main':main.cpp:(.text+0x1d): undefined reference to `vga_init'
:main.cpp:(.text+0x29): undefined reference to `vga_setmode'
:main.cpp:(.text+0x35): undefined reference to `vga_setcolor'
:main.cpp:(.text+0x49): undefined reference to `vga_drawpixel'
:main.cpp:(.text+0x55): undefined reference to `vga_setmode'
/tmp/ccqUVw0g.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
... и так со всеми. Что делать?
gcc main.cpp
main.cpp:14:2: warning: no newline at end of file
/tmp/ccqUVw0g.o: In function `main':main.cpp:(.text+0x1d): undefined reference to `vga_init'
:main.cpp:(.text+0x29): undefined reference to `vga_setmode'
:main.cpp:(.text+0x35): undefined reference to `vga_setcolor'
:main.cpp:(.text+0x49): undefined reference to `vga_drawpixel'
:main.cpp:(.text+0x55): undefined reference to `vga_setmode'
/tmp/ccqUVw0g.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
... и так со всеми. Что делать?
-
andy128k
- Сообщения: 28
- ОС: GNU/Linux
-
Earlind
- Сообщения: 10
- ОС: SimplyMepis
Re: Проблемы с библиотеками
Там папка с библиотекой лежит рядом с main.cpp... разве тут надо прописывать -l? И как собственно тогда её прописать? Я когда пытался SDL подключить писал -lDSL и всё равно была ошибка в каких-то неизвестных мне файлах.
-
andy128k
- Сообщения: 28
- ОС: GNU/Linux
Re: Проблемы с библиотеками
Указываешь путь к библиотеке ключиком -L <папка>, и библиотеку клюиком -l <имя библиотеки>.
-
Earlind
- Сообщения: 10
- ОС: SimplyMepis
Re: Проблемы с библиотеками
видимо я немного *ламер*
пишу
g++ main.cpp -L src -l vga.h
g++: vga.h: No such file or directory
main.cpp:14:2: warning: no newline at end of file
vga.h лежит в папке src рядом с main.cpp
-
Liksys
- Сообщения: 2910
Re: Проблемы с библиотеками
Читай сообщения компилера. Переведи в конце main.cpp строку.
И у тебя явно не библиотека, и исходники и заголовочники. При инклюдах надо подставить src (#include "src/vga.h").
И у тебя явно не библиотека, и исходники и заголовочники. При инклюдах надо подставить src (#include "src/vga.h").
-
Earlind
- Сообщения: 10
- ОС: SimplyMepis
Re: Проблемы с библиотеками
код программы:
#include <stdlib.h>
#include "src/vga.h"
int main(void)
{
vga_init();
vga_setmode(G320x200x256);
vga_setcolor(4);
vga_drawpixel(10, 10);
vga_setmode(TEXT);
return EXIT_SUCCESS;
}
Нет новой линии. Это разве так важно?
у меня так и было написано
#include <stdlib.h>
#include "src/vga.h"
int main(void)
{
vga_init();
vga_setmode(G320x200x256);
vga_setcolor(4);
vga_drawpixel(10, 10);
vga_setmode(TEXT);
return EXIT_SUCCESS;
}
Читай сообщения компилера. Переведи в конце main.cpp строку.
Нет новой линии. Это разве так важно?
И у тебя явно не библиотека, и исходники и заголовочники. При инклюдах надо подставить src (#include "src/vga.h").
у меня так и было написано
-
Liksys
- Сообщения: 2910
Re: Проблемы с библиотеками
важно. В конце всегда должна быть новая строка
-
Earlind
- Сообщения: 10
- ОС: SimplyMepis
Re: Проблемы с библиотеками
Во, написал так:
root@1[dszfv]# g++ main.cpp -l src/vga.h
/usr/bin/ld: cannot find -l-xc++-header
collect2: ld returned 1 exit status
А что это за хидер? И почему его нет?
root@1[dszfv]# g++ main.cpp -l src/vga.h
/usr/bin/ld: cannot find -l-xc++-header
collect2: ld returned 1 exit status
А что это за хидер? И почему его нет?
-
Earlind
- Сообщения: 10
- ОС: SimplyMepis
Re: Проблемы с библиотеками
Если на него забить, то возвращается всё в то, с чего начиналось:
g++ main.cpp
/tmp/ccY9d8aE.o: In function `main':main.cpp:(.text+0x1d): undefined reference to `vga_init'
:main.cpp:(.text+0x29): undefined reference to `vga_setmode'
:main.cpp:(.text+0x35): undefined reference to `vga_setcolor'
:main.cpp:(.text+0x49): undefined reference to `vga_drawpixel'
:main.cpp:(.text+0x55): undefined reference to `vga_setmode'
collect2: ld returned 1 exit status
g++ main.cpp
/tmp/ccY9d8aE.o: In function `main':main.cpp:(.text+0x1d): undefined reference to `vga_init'
:main.cpp:(.text+0x29): undefined reference to `vga_setmode'
:main.cpp:(.text+0x35): undefined reference to `vga_setcolor'
:main.cpp:(.text+0x49): undefined reference to `vga_drawpixel'
:main.cpp:(.text+0x55): undefined reference to `vga_setmode'
collect2: ld returned 1 exit status
-
Liksys
- Сообщения: 2910
Re: Проблемы с библиотеками
Вместо напиши опцию
Код: Выделить всё
-lКод: Выделить всё
-I-
sergio
- Сообщения: 436
- Статус: Интересующийся новичок
- ОС: Debian GNU/Linux 4 & 5
Re: Проблемы с библиотеками
Так, очередная жертва хедеров и библиотек...
GCC:
-I /path/to/root-of-header-files (заглавная ай)
-L /path/to/libs
-l moyaliba - для подключения либ-файла libmoyaliba.a (строчная эль)
#include <moyalibaheader.h> (который лежит в папке /path/to/root-of-header-files)
GCC:
-I /path/to/root-of-header-files (заглавная ай)
-L /path/to/libs
-l moyaliba - для подключения либ-файла libmoyaliba.a (строчная эль)
#include <moyalibaheader.h> (который лежит в папке /path/to/root-of-header-files)
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
-
Earlind
- Сообщения: 10
- ОС: SimplyMepis
Re: Проблемы с библиотеками
Изменил в коде:
#include <vga.h>
и написал в консоли
g++ test.cpp -I src -L src
test.cpp:14:2: warning: no newline at end of file
/tmp/ccISGklr.o: In function `main':test.cpp:(.text+0x1d): undefined reference to `vga_init'
:test.cpp:(.text+0x29): undefined reference to `vga_setmode'
:test.cpp:(.text+0x35): undefined reference to `vga_setcolor'
:test.cpp:(.text+0x49): undefined reference to `vga_drawpixel'
:test.cpp:(.text+0x55): undefined reference to `vga_setmode'
collect2: ld returned 1 exit status
... может у меня ОС кривой вместе к ГНУ?
#include <vga.h>
и написал в консоли
g++ test.cpp -I src -L src
test.cpp:14:2: warning: no newline at end of file
/tmp/ccISGklr.o: In function `main':test.cpp:(.text+0x1d): undefined reference to `vga_init'
:test.cpp:(.text+0x29): undefined reference to `vga_setmode'
:test.cpp:(.text+0x35): undefined reference to `vga_setcolor'
:test.cpp:(.text+0x49): undefined reference to `vga_drawpixel'
:test.cpp:(.text+0x55): undefined reference to `vga_setmode'
collect2: ld returned 1 exit status
... может у меня ОС кривой вместе к ГНУ?
-
sergio
- Сообщения: 436
- Статус: Интересующийся новичок
- ОС: Debian GNU/Linux 4 & 5
Re: Проблемы с библиотеками
Я боюсь, просто кто-то плохо представляет, что он делает.
Я же указал три опции для компилятора - помимо инклуд в исходных файлах. Где третья?
И запускайте по отдельности компилятор и линковщик, чтоб было понятнее.
g++ -c -I src test.cpp # заглавная ай, в src лежит vga.h ? --- должен скомпилироваться test.o
Если собрался -
g++ -L src -lvga test.o # строчная эль; в src лежит libvga.a ? --- должен собраться выполнимый эльф a.out .....
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
-
Earlind
- Сообщения: 10
- ОС: SimplyMepis
Re: Проблемы с библиотеками
МИСТИКА
видимо не лежит:
g++ -L src -lvga test.o
/usr/bin/ld: cannot find -lvga
collect2: ld returned 1 exit status
А где её взять?
g++ -L src -lvga test.o # строчная эль; в src лежит libvga.a ? --- должен собраться выполнимый эльф a.out .....
видимо не лежит:
g++ -L src -lvga test.o
/usr/bin/ld: cannot find -lvga
collect2: ld returned 1 exit status
А где её взять?
-
sergio
- Сообщения: 436
- Статус: Интересующийся новичок
- ОС: Debian GNU/Linux 4 & 5
Re: Проблемы с библиотеками
Лучше всего - в своем дистрибутиве. Установить пакет нужной библиотеки и ее же -dev.
У меня например:
Код: Выделить всё
$ apt-file search libvga
.....
libsvga1: usr/lib/libvga.so.1
libsvga1: usr/lib/libvga.so.1
libsvga1: usr/lib/libvga.so.1.4.3
libsvga1: usr/lib/libvga.so.1.4.3
libsvga1: usr/lib/libvgagl.so.1
libsvga1: usr/lib/libvgagl.so.1
libsvga1: usr/lib/libvgagl.so.1.4.3
libsvga1: usr/lib/libvgagl.so.1.4.3
libsvga1: usr/share/man/man5/libvga.config.5.gz
libsvga1: usr/share/man/man5/libvga.config.5.gz
libsvga1: usr/share/man/man5/libvga.et4000.5.gz
libsvga1: usr/share/man/man5/libvga.et4000.5.gz
libsvga1-dev: usr/lib/libvga.a
libsvga1-dev: usr/lib/libvga.a
libsvga1-dev: usr/lib/libvga.so
libsvga1-dev: usr/lib/libvga.so
libsvga1-dev: usr/lib/libvgagl.a
libsvga1-dev: usr/lib/libvgagl.a
libsvga1-dev: usr/lib/libvgagl.so
libsvga1-dev: usr/lib/libvgagl.so
svgalib1-libggi2: usr/lib/libvga.so.1
svgalib1-libggi2: usr/lib/libvga.so.1
svgalib1-libggi2: usr/lib/libvga.so.1.0.0
svgalib1-libggi2: usr/lib/libvga.so.1.0.0
svgalib1-libggi2: usr/lib/libvgagl.so.1
svgalib1-libggi2: usr/lib/libvgagl.so.1
svgalib1-libggi2: usr/lib/libvgagl.so.1.4.3
svgalib1-libggi2: usr/lib/libvgagl.so.1.4.3
svgatextmode: usr/share/doc/svgatextmode/examples/svgalib/libvga.et4000-320x200x16M
xserver-xorg-core: usr/lib/xorg/modules/libvgahw.so
xserver-xorg-core: usr/lib/xorg/modules/libvgahw.soПохоже, либвга пытаются ставить два пакета, ну значит разберитесь, что есть у вас и что вам надо, поставьте. Тогда -I -L перенаведете на системые папки уже...
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
-
Earlind
- Сообщения: 10
- ОС: SimplyMepis
Re: Проблемы с библиотеками
у меня внизу такая коробочка нарисована, я не знаю как она называется. Там скачивание библиотек. Поставил. Заработало. Огромное вам спасибо!
-
sergio
- Сообщения: 436
- Статус: Интересующийся новичок
- ОС: Debian GNU/Linux 4 & 5
Re: Проблемы с библиотеками
* пацталом *
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome