URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3313
[ Назад ]

Исходное сообщение
"Ламерский вопрос про описание библиотек"

Отправлено Cadaver , 25-Авг-04 13:35 
Написал .h файл, там только дефайны макросов и заголовки функций. Есть в том же каталоге файл .с, в котором описания этих функций. Так загвоздка вот в чем: если пытаюсь компилить прогу с #include .h-файл, то линковщик говорит что не вижу описаний функций таких-то (тех, которые в .h). Приходится компилить вначале .с в .о (gcc -c ...), а потом писать gcc myprog.c .o-файл -o myprog и только тогда все компилится нормально. Расскажите, как надо сделать чтоб моя прога компилилась без всех этих заморочек с .о, как нормальные стандартные библиотеки (gcc myprog.c -o myprog)?

Содержание

Сообщения в этом обсуждении
"Ламерский вопрос про описание библиотек"
Отправлено kir , 25-Авг-04 14:15 
> Написал .h файл, там только дефайны макросов и заголовки функций. Есть
>в том же каталоге файл .с, в котором описания этих функций.
>Так загвоздка вот в чем: если пытаюсь компилить прогу с #include
>.h-файл, то линковщик говорит что не вижу описаний функций таких-то (тех,
>которые в .h). Приходится компилить вначале .с в .о (gcc -c
>...), а потом писать gcc myprog.c .o-файл -o myprog и только
>тогда все компилится нормально. Расскажите, как надо сделать чтоб моя прога
>компилилась без всех этих заморочек с .о, как нормальные стандартные библиотеки
>(gcc myprog.c -o myprog)?

разве неучил в чем разница #include <> от #include "" ?
#include "<name-h-file>.h"



"Ламерский вопрос про описание библиотек"
Отправлено Cadaver , 25-Авг-04 15:36 
>разве неучил в чем разница #include <> от #include "" ?
>#include "<name-h-file>.h"

У меня в начале и написано #include "file.h", все равно линковщик ругается, если gcc myptog.c -o myprog
undefined reference to ...
ld returned 1 status, блин!


"Ламерский вопрос про описание библиотек"
Отправлено SergeiZz , 25-Авг-04 16:31 
>>разве неучил в чем разница #include <> от #include "" ?
>>#include "<name-h-file>.h"
>
>У меня в начале и написано #include "file.h", все равно линковщик ругается,
>если gcc myptog.c -o myprog
>undefined reference to ...
>ld returned 1 status, блин!
Попробуй
g++ -Wall myptog.c -o myprog


"Ламерский вопрос про описание библиотек"
Отправлено vnp , 25-Авг-04 21:36 
> Написал .h файл, там только дефайны макросов и заголовки функций. Есть
>в том же каталоге файл .с, в котором описания этих функций.
>Так загвоздка вот в чем: если пытаюсь компилить прогу с #include
>.h-файл, то линковщик говорит что не вижу описаний функций таких-то (тех,
>которые в .h). Приходится компилить вначале .с в .о (gcc -c
>...), а потом писать gcc myprog.c .o-файл -o myprog и только
>тогда все компилится нормально. Расскажите, как надо сделать чтоб моя прога
>компилилась без всех этих заморочек с .о, как нормальные стандартные библиотеки
>(gcc myprog.c -o myprog)?

Чтобы собиралось (а не компилилось, кстати) как библиотека, нужно сделать библиотеку mylib.a (man ar), и положить в место, известное линкеру (man ldconfig).
При этом программу все равно придется собирать с флагом -lmy.
То, что вы называете "без заморочек" -- обман зрения. Попробуйте добавить флаг -v к вызову gcc, и станет видно, какие библиотеки и файлы gcc цепляет по умолчанию. Чтобы к ним добавилась ваша библиотека, нужно будет править конфиги (и/или исходники) gcc...
А по хорошему, советую написать makefile, с зависимостью типа
myprog: myprog.o mylib.o
и в дальнейшем говорить make и ничего больше.


"Ламерский вопрос про описание библиотек"
Отправлено qq , 26-Авг-04 01:28 
>Чтобы собиралось (а не компилилось, кстати) как библиотека, нужно сделать библиотеку mylib.a

точнее
libmy.a


"Ламерский вопрос про описание библиотек"
Отправлено vnp , 26-Авг-04 03:42 
>>Чтобы собиралось (а не компилилось, кстати) как библиотека, нужно сделать библиотеку mylib.a
>
>точнее
>libmy.a

Разумеется


"Ламерский вопрос про описание библиотек"
Отправлено Cadaver , 26-Авг-04 13:09 
Спасибо за подробное разъяснение. За что люблю этот форум - это за то что здесь не прикалываются над незнанием и не издеваются, а реально помогают разобраться.

"Ламерский вопрос про описание библиотек"
Отправлено Gorynych , 01-Сен-04 10:03 
> Написал .h файл, там только дефайны макросов и заголовки функций. Есть
>в том же каталоге файл .с, в котором описания этих функций.
>Так загвоздка вот в чем: если пытаюсь компилить прогу с #include
>.h-файл, то линковщик говорит что не вижу описаний функций таких-то (тех,
>которые в .h).
Ремарка: head file и линковщик в общем случае вещи перпендикулярные (если, конечно, в head file нет опций для линкера)