OpenBSD 6.1 termio.h: нет такого файла или каталога
Я пытаюсь построить свой код с OpenBSD 6.1, но я получаю это сообщение об ошибке.
sh.h:98:20: error: termio.h: No such file or directory
In file included from edit.c:1:
sh.h:235: error: conflicting types for 'rlim_t'
/usr/include/sys/types.h:145: error: previous declaration of 'rlim_t' was here
In file included from edit.c:1:
sh.h:2291: warning: 'struct termio' declared inside parameter list
sh.h:2291: warning: its scope is only this definition or declaration, which is probably not what you want
edit.c: In function 'x_mode':
edit.c:3256: error: invalid use of undefined type 'struct termio'
edit.c:3256: error: 'VERASE' undeclared (first use in this function)
edit.c:3256: error: (Each undeclared identifier is reported only once
edit.c:3256: error: for each function it appears in.)
edit.c:3256: error: invalid use of undefined type 'struct termio'
edit.c:3257: error: invalid use of undefined type 'struct termio'
edit.c:3257: error: 'VKILL' undeclared (first use in this function)
edit.c:3257: error: invalid use of undefined type 'struct termio'
edit.c:3258: error: invalid use of undefined type 'struct termio'
edit.c:3258: error: 'VINTR' undeclared (first use in this function)
edit.c:3258: error: invalid use of undefined type 'struct termio'
edit.c:3259: error: invalid use of undefined type 'struct termio'
edit.c:3259: error: 'VQUIT' undeclared (first use in this function)
edit.c:3259: error: invalid use of undefined type 'struct termio'
edit.c:3260: error: invalid use of undefined type 'struct termio'
edit.c:3260: error: 'VEOF' undeclared (first use in this function)
edit.c:3260: error: invalid use of undefined type 'struct termio'
edit.c:3293: error: 'TCSETAW' undeclared (first use in this function)
*** Error 1 in src (Makefile:774 'edit.o')
*** Error 1 in . (Makefile:834 'all-recursive')
*** Error 1 in /root/opsh (Makefile:750 'all')
# pkg_add termios
quirks-2.304 signed on 2017-04-02T15:01:33Z
Can't find termios
# pkg_add termios
# termios
ksh: termios: not found
# termio
ksh: termio: not found
# pkg_add libc6-dev
quirks-2.304 signed on 2017-04-02T15:01:33Z
Can't find libc6-dev
# pkg_add libc6
quirks-2.304 signed on 2017-04-02T15:01:33Z
Can't find libc6
#
Что я могу с этим поделать? Код компилируется с Ubuntu 1604.
1 ответ
<termio.h>
заголовок не является стандартным, хотя он доступен в Linux. Стандартный заголовок POSIX <termios.h>
,
На моем образе виртуальной машины Ubuntu 16.04 LTS файл полностью содержит:
/* Compatible <termio.h> for old `struct termio' ioctl interface.
This is obsolete; use the POSIX.1 `struct termios' interface
defined in <termios.h> instead. */
#include <termios.h>
#include <sys/ioctl.h>
Если вы используете нестандартные заголовки, вы можете ожидать, что не найдете их в других системах. Вы можете создать себе копию <termio.h>
используя информацию выше. Вам может повезти и вы обнаружите, что BSD <sys/ioctl.h>
(он существует) содержит информацию, которая вам нужна - если таковая имеется - но это не заголовок, стандартизированный POSIX, поэтому все ставки отключены. Если вы используете только стандартные символы из <termios.h>
, вы должны быть в безопасности.