New comment by subnut on void-packages repository https://github.com/void-linux/void-packages/pull/36395#issuecomment-1080998712 Comment: ## xbps-src doesn't include `libmbedtls` in dependencies. WHY SO? ### `libmongoose.so` refers to symbols of `libmbedtls.so` ``` $ c99 -O1 -lmongoose simple_web_server.c -o simple_web_server /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_ssl_set_hostname' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_x509_crt_free' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_ssl_setup' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_x509_crl_parse' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_ssl_conf_own_cert' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_ssl_set_bio' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_ssl_conf_authmode' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_x509_crt_parse' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_ssl_config_defaults' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_x509_crl_free' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_ssl_init' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_ssl_read' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_x509_crl_init' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_ssl_config_init' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_pk_init' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_ssl_config_free' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_ssl_conf_rng' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_pk_free' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_ssl_conf_ca_chain' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_ssl_write' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_x509_crt_init' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_ssl_free' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_pk_parse_key' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_ssl_handshake' /bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libmongoose.so: undefined reference to `mbedtls_ssl_conf_dbg' collect2: error: ld returned 1 exit status ``` ``` $ c99 -o simple_web_server simple_web_server.c -lmongoose -lmbedtls $ echo $? 0 ``` #### `simpleHTTPserver.c` ```c #include static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) { struct mg_http_serve_opts opts = {.root_dir = "."}; // Serve local dir if (ev == MG_EV_HTTP_MSG) mg_http_serve_dir(c, ev_data, &opts); } int main(int argc, char *argv[]) { struct mg_mgr mgr; mg_mgr_init(&mgr); // Init manager mg_http_listen(&mgr, "http://localhost:8000", fn, &mgr); // Setup listener for (;;) mg_mgr_poll(&mgr, 1000); // Event loop mg_mgr_free(&mgr); // Cleanup return 0; } ```