LINUX.ORG.RU

библиотека для ipc


0

0

Не подскажет ли горячо любимый all какую библиотеку надо прилинковывать к проге для использования функции ftok, а так же функции msgget и иже с ними


-lposix пробовал?

anonymous
()

Пробовал - дохлый номер. Что уже только не пробовал, даже до egcs руки дошли :). Но ведь каким то образом можно вызывать этот долбаный ftoc !!! В SYSCALLS.c.X белым по синему(или как там еще) ясно написано: /* SYSCALLS.c:654:NC */ extern key_t ftok (const char *, int);

cbax
() автор топика

Хмм. Ниче линковать не надо - вся эта бодяга в libc, а libc gcc по умолчанию линкует. Вы случаем линковку с включением хидеров не путаете ?

timur
()

К счастью не путаю :):):). В том то и дело - объектный код генерит а при линковании говорит что функцию такую не находит.

cbax
() автор топика

#include <stdio.h>
...
#include <linux/msg.h>
#include <unistd.h>

...

int main()
{

  ...
  
  key=ftoc(PATH,'x');
  if((qid=msgget(key,IPC_CREAT|0660))==-1)
  fprintf(log,"Queue create failed\n");
  else
  fprintf(log,"Queue create successful\n");
  
  ...
}
...

Кусок проги пытающейся создать очередь сообщений.

При попытке компиляции выдает:

/tmp/ccCiozUO.o: In function `main':
/tmp/ccCiozUO.o(.text+0xdb): undefined reference to `ftoc'
collect2: ld returned 1 exit status     

Если я правильно понял - компоновщик не находит библиотеку содержащуу код функции ftoc. Что надо прилинковывать?
 

cbax
() автор топика

Воистину торможу !!! Это же надо додуматься написать вместо ftok() ftoc() и потом почти неделю в программе ошибку искать !!! Линковать к ней все подряд и по другому всячески над ней глумится. Всем thx !!! Тут, наверное в ДНК ошибка.

cbax
() автор топика

#include linux/msg.h - шедевр переносимости!!!

anonymous
()

Хорошо, насчет шедевра согласен. Так лучше?

#include <sys/ipc.h>
#include <sys/msg.h>
#include <sys/types.h>

:):) 

cbax
() автор топика

Мда, бывает. Просто возьмите себе в привычку писать такой код, который при компиляции не дает предупреждений. Ведь наверняка компилер дал вам implicit function declaration.
cc -Wall -Werror.

timur
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.