Поставляется в виде трёх архивов: собранный бинарник для Линукса, бинарник для ФриБСД и комплект исходников. Основной язык разработки Эрланг - кроссплатформенно и переносимо, но используются три нативных динамических библиотеки. При внимательном рассмотрении, сборки оказались под i386. Целевая система - amd64.
Переходим к исходникам и видим, собственно, только исходники, без Makefile. Собственный опыт программирования на Си на уровне "Hello world", без подключения сторонних библиотек и написания собственных Makefile.
На основе инклюдов в исходниках:
Код: Выделить всё
drv_tls.c:#include <stdio.h>
drv_tls.c:#include <string.h>
drv_tls.c:#include <erl_driver.h>
drv_tls.c:#include <openssl/ssl.h>
drv_tls.c:#include <openssl/err.h>
drv_xml.c:#include <stdio.h>
drv_xml.c:#include <string.h>
drv_xml.c:#include <erl_driver.h>
drv_xml.c:#include <ei.h>
drv_xml.c:#include <expat.h>
drv_zlib.c:#include <stdio.h>
drv_zlib.c:#include <string.h>
drv_zlib.c:#include <erl_driver.h>
drv_zlib.c:#include <zlib.h>
Код: Выделить всё
CFLAGS = \
-Wall -fpic \
-I /usr/local/lib/erlang/erts-5.6.5/include/ \
-I /usr/local/lib/erlang/lib/erl_interface-3.5.9/include/ \
-I /usr/local/include/
LIBS = \
-shared \
-L /usr/local/lib/erlang/lib/erl_interface-3.5.9/lib/ \
-l erl_interface \
-l ei \
-L /usr/local/lib/
all:
gcc ${CFLAGS} drv_tls.c ${LIBS} -l ssl -o drv_tls.so
gcc ${CFLAGS} drv_xml.c ${LIBS} -l expat -o drv_xml.so
gcc ${CFLAGS} drv_zlib.c ${LIBS} -l z -o drv_zlib.so
Код: Выделить всё
-rwxr-xr-x 1 beard beard 19192 17 окт 16:33 drv_tls.so
-rwxr-xr-x 1 beard beard 28257 17 окт 16:33 drv_xml.so
-rwxr-xr-x 1 beard beard 10433 17 окт 16:33 drv_zlib.so
Код: Выделить всё
-rwxr-xr-x 1 beard beard 37858 31 авг 01:44 drv_tls.so
-rwxr-xr-x 1 beard beard 25590 31 авг 01:44 drv_xml.so
-rwxr-xr-x 1 beard beard 11659 31 авг 01:44 drv_zlib.so
Подскажите, что упускаю?