Неявное объявление process_vm_readv, но я включаю ‹sys/uio.h›

Я пытаюсь скомпилировать код с помощью GCC. В своем коде я вызываю process_vm_readv() и process_vm_writev() (это нестандартные расширения Linux, см. справочную страницу здесь: http://linux.die.net/man/2/process_vm_writev).

Придерживаясь человека, я включаю в свой файл .c, но GCC выплевывает:

предупреждение: неявное объявление функции «process_vm_writev»

Я не уверен, как это исправить... Стандартные функции libc, такие как printf и strlen, компилируются нормально.


person tcpie    schedule 05.05.2014    source источник
comment
Кажется, у вашего libc его нет. Какая у вас версия libc? Присутствует ли прототип в /usr/include/bits/uio.h ?   -  person cnicutar    schedule 05.05.2014
comment
@downvoter Это правильный вопрос, правильно сформулированный и в рамках сайта. Есть причины для понижения?   -  person cnicutar    schedule 05.05.2014
comment
Я должен был упомянуть, что моя версия glibc - 2.17 (функции поддерживаются, начиная с версии ›= 2.15.), Однако ответ nos исправил это.   -  person tcpie    schedule 05.05.2014
comment
Ага. Это отличный ответ. Я удивлен, что на странице руководства это не упоминается, обычно это упоминается прямо перед заголовком.   -  person cnicutar    schedule 05.05.2014


Ответы (1)


Эти функции доступны только при включенных расширениях GNU. То есть действует #define _GNU_SOURCE (факт, который, вероятно, должен был быть задокументирован на странице руководства)

Так что вам нужно будет сделать

#define _GNU_SOURCE
#include <sys/uio.h>
person nos    schedule 05.05.2014
comment
Ага, так и получилось! Я сообщил об ошибке в проекте man-pages. - person tcpie; 05.05.2014