Проблемы с библиотеками

Модератор: Модераторы разделов

Earlind
Сообщения: 10
ОС: SimplyMepis

Проблемы с библиотеками

Сообщение Earlind »

Здравствуйте. У меня проблема в том, что ГНУ наотрез отказывается использовать функции любых библиотек. Вот например пишет:

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

Re: Проблемы с библиотеками

Сообщение andy128k »

Earlind писал(а):
04.11.2007 10:52
... и так со всеми. Что делать?


Надо бы сообщать компилятору о желании использовать библиотеки. Это делается ключиком -l..
Спасибо сказали:
Earlind
Сообщения: 10
ОС: SimplyMepis

Re: Проблемы с библиотеками

Сообщение Earlind »

andy128k писал(а):
04.11.2007 11:46
Надо бы сообщать компилятору о желании использовать библиотеки. Это делается ключиком -l..


Там папка с библиотекой лежит рядом с main.cpp... разве тут надо прописывать -l? И как собственно тогда её прописать? Я когда пытался SDL подключить писал -lDSL и всё равно была ошибка в каких-то неизвестных мне файлах.
Спасибо сказали:
andy128k
Сообщения: 28
ОС: GNU/Linux

Re: Проблемы с библиотеками

Сообщение andy128k »

Earlind писал(а):
04.11.2007 12:00
Там папка с библиотекой лежит рядом с main.cpp... разве тут надо прописывать -l? И как собственно тогда её прописать? Я когда пытался SDL подключить писал -lDSL и всё равно была ошибка в каких-то неизвестных мне файлах.


Указываешь путь к библиотеке ключиком -L <папка>, и библиотеку клюиком -l <имя библиотеки>.
Спасибо сказали:
Earlind
Сообщения: 10
ОС: SimplyMepis

Re: Проблемы с библиотеками

Сообщение Earlind »

andy128k писал(а):
04.11.2007 12:18
Указываешь путь к библиотеке ключиком -L <папка>, и библиотеку клюиком -l <имя библиотеки>.


видимо я немного *ламер*

пишу

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: Проблемы с библиотеками

Сообщение Liksys »

Читай сообщения компилера. Переведи в конце main.cpp строку.
И у тебя явно не библиотека, и исходники и заголовочники. При инклюдах надо подставить src (#include "src/vga.h").
Спасибо сказали:
Earlind
Сообщения: 10
ОС: SimplyMepis

Re: Проблемы с библиотеками

Сообщение Earlind »

код программы:

#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: Проблемы с библиотеками

Сообщение Liksys »

важно. В конце всегда должна быть новая строка
Спасибо сказали:
Earlind
Сообщения: 10
ОС: SimplyMepis

Re: Проблемы с библиотеками

Сообщение Earlind »

Во, написал так:

root@1[dszfv]# g++ main.cpp -l src/vga.h
/usr/bin/ld: cannot find -l-xc++-header
collect2: ld returned 1 exit status

А что это за хидер? И почему его нет?
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Проблемы с библиотеками

Сообщение Liksys »

забей на -l
Спасибо сказали:
Earlind
Сообщения: 10
ОС: SimplyMepis

Re: Проблемы с библиотеками

Сообщение Earlind »

Если на него забить, то возвращается всё в то, с чего начиналось:

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: Проблемы с библиотеками

Сообщение Liksys »

Вместо напиши опцию
Спасибо сказали:
sergio
Сообщения: 436
Статус: Интересующийся новичок
ОС: Debian GNU/Linux 4 & 5

Re: Проблемы с библиотеками

Сообщение sergio »

Так, очередная жертва хедеров и библиотек...

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
Спасибо сказали:
Earlind
Сообщения: 10
ОС: SimplyMepis

Re: Проблемы с библиотеками

Сообщение Earlind »

Изменил в коде:
#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: Проблемы с библиотеками

Сообщение sergio »

Earlind писал(а):
04.11.2007 19:18
Изменил в коде:
#include <vga.h>

и написал в консоли
g++ test.cpp -I src -L src


... может у меня ОС кривой вместе к ГНУ?

Я боюсь, просто кто-то плохо представляет, что он делает.
Я же указал три опции для компилятора - помимо инклуд в исходных файлах. Где третья?
И запускайте по отдельности компилятор и линковщик, чтоб было понятнее.
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
Спасибо сказали:
Earlind
Сообщения: 10
ОС: SimplyMepis

Re: Проблемы с библиотеками

Сообщение Earlind »

МИСТИКА :mellow:
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: Проблемы с библиотеками

Сообщение sergio »

Earlind писал(а):
04.11.2007 19:50
видимо не лежит:
А где её взять?

Лучше всего - в своем дистрибутиве. Установить пакет нужной библиотеки и ее же -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
Спасибо сказали:
Earlind
Сообщения: 10
ОС: SimplyMepis

Re: Проблемы с библиотеками

Сообщение Earlind »

у меня внизу такая коробочка нарисована, я не знаю как она называется. Там скачивание библиотек. Поставил. Заработало. Огромное вам спасибо!
Спасибо сказали:
sergio
Сообщения: 436
Статус: Интересующийся новичок
ОС: Debian GNU/Linux 4 & 5

Re: Проблемы с библиотеками

Сообщение sergio »

Earlind писал(а):
04.11.2007 20:13
у меня внизу такая коробочка нарисована, я не знаю как она называется. Там скачивание библиотек.

* пацталом * :crazy:
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Спасибо сказали: