Может ли avr-g cc использовать sys / socket.h? - PullRequest
0 голосов
/ 27 марта 2020

У меня есть программа, которая без проблем компилируется на моем Raspberry Pi, используя gcc, который включает в себя выражение:

#include <sys/socket.h>

Однако я собираюсь использовать его на Arduino. Я установил avr-g cc, avr-Lib C и avrdude, но когда я пытаюсь скомпилировать, используя:

avr-gcc Project.c -o Project

, я получаю сообщение об ошибке:

fatal error: sys/socket.h: No such file or directory

Я думал, что socket.h является частью C стандартной библиотеки. Можно ли установить эту библиотеку для использования avr-g cc, или есть способ указать каталог этой библиотеки (я не смог найти его в обычных папках, но G CC, кажется, быть в состоянии найти это)?

1 Ответ

2 голосов
/ 27 марта 2020

Может ли avr-g cc использовать sys / socket.h?

Нет. Оно не может. Это не ограничение компилятора, хотя. Это ограничение системы, в которой должен выполняться ваш код.

Заголовки sys/*.h не являются частью стандартной библиотеки C и доступны только в POSIX-совместимых операционных системах и предоставляют функции C для взаимодействия с ОС. Заголовок sys/socket.h предоставляет функции для взаимодействия с операционной системой для создания, управления и взаимодействия с сокетами.

Поскольку сокеты - это функция, предоставляемая операционной системой, и вы компилируете код, который запускается без изменений. микроконтроллер Arduino, на котором не работает операционная система , работающий на вершине, все назначение заголовка sys/socket.h обнуляется.

Это относится к любому другому виду функций заголовка или библиотеки, которые взаимодействуют с операционной системой, такой как unistd.h, fcntl.h, pthread.h et c. На самом деле, avr-libc, Стандартная C библиотека для AVR-G CC, не предоставляет такие заголовки.

Вам нужно будет просмотреть документацию avr-libc чтобы узнать больше о предоставляемых заголовках и функциях и их использовании.

...