Странный Erlang о драйверах C

Я хочу изучить внутреннее поведение Erlang RunTime System, чтобы внести некоторые изменения в будущем, я делаю некоторые успехи, и теперь я нахожусь на уровне драйверов Erlang, написанных на языке C, эти драйверы расположены в /usr/ports/lang/erlang/work/otp-OTP-21-3-8-18/erts/emulator/drivers/commonв ОС FreeBSD всего 5 или 6 драйверов, поэтому я хотел скомпилировать один драйвер, просто скомпилируйте его. Поэтому я использовал компилятор Clang, поскольку он интегрирован с ОС FreeBSD, и попытался скомпилировать драйвер, этот драйвер отвечает за все сетевые задачи, такие как открытие сокетов и прием соединений ...., и я попытался включить все пути к каталогам, которые содержат включенные файлы, используемые этим драйвером, поэтому я набрал:

      cc inet_drv.c 
   -I/usr/ports/lang/erlang/work/otp-OTP-21.3.8.18/erts/emulator/beam  
   -I/usr/local/lib/erlang/include   
   -I/usr/.... 

cc - это команда Clang для компиляции программы на C, и можно добавить каталог, содержащий файлы заголовков ( .h) компилятору, когда он проверяет наличие включаемых файлов, например, когда программа C включает файл #include<erl_driver.h> компилятор будет искать erl_driver.hв каталогах, указанных -I вариант.

Когда все делали и пытались скомпилировать драйвер, я был удивлен множеством предупреждений и ошибок, ПОЧЕМУ?

Поскольку сеть в Erlang работает отлично, а функция erl_ddll:loaded_drivers() возвращает список загруженных драйверов, например tcp_inet а также udp_inet, это означает, что inet_drv.cкомпилируется без ошибок и отлично загружается во время загрузки системы Erlang, поэтому ПОЧЕМУ он был скомпилирован с ошибками, когда я пытаюсь его скомпилировать? Я не могу найти на это ответа, я пробовал с другим драйвером, а также скомпилировал с большим количеством ошибок. Я уверен, что пропустил то, о чем хочу знать.

Я постарался, чтобы вопрос был простым и понятным, так что, пожалуйста, кто может мне помочь.

0 ответов

Другие вопросы по тегам