Compiling nghttp2 is failing for me in Alpine 3.21, which uses gcc 14 (14.2.0). It looks like the issue is that the header file nghttp2.h
need to be explicitly included in the nghttp2_mod.c
files. This is the error when running make
inside of src/modules/nghttp2
(after compiling kamailio as normal):
/home/builder/kamailio_src/src/modules/nghttp2 # make
make: --libs: No such file or directory
make: --libs: No such file or directory
make: --libs: No such file or directory
make: --libs: No such file or directory
CC (gcc) [M nghttp2.so] nghttp2_mod.o
nghttp2_mod.c: In function 'ksr_nghttp2_send_reply':
nghttp2_mod.c:317:22: error: implicit declaration of function 'nghttp2_submit_response'; did you mean 'nghttp2_submit_response2'? [-Wimplicit-function-declaration]
317 | rv = nghttp2_submit_response(_ksr_nghttp2_ctx.session,
| ^~~~~~~~~~~~~~~~~~~~~~~
| nghttp2_submit_response2
make: *** [../../Makefile.rules:100: nghttp2_mod.o] Error 1
Compilation works on Debian 12, so checked difference in make
and gcc
versions. Note that the make: --libs: No such file or directory
appear to be from a different issue with make
4.4 not recursively expanding variables. From gcc's documentation it looks like implicit function declarations are no longer possible
https://gcc.gnu.org/gcc-14/porting_to.html
Compile Kamailio 6.0.0 (with default config), then compile the nghttp2 module
Explicitly import nghttp2.h
in nghttp2_mod.c
and nghttp2_server.c
. This is outside of my normal wheelhouse, but I was able to do this and successfully compile the module:
nghttp2_mod.c
:@@ -25,6 +25,7 @@
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
+#include <nghttp2/nghttp2.h>
#include "../../core/sr_module.h"
#include "../../core/dprint.h"
nghttp2_server.c
:@@ -23,6 +23,7 @@
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
+#include <nghttp2/nghttp2.h>
#include "nghttp2_server.h"
#define OUTPUT_WOULDBLOCK_THRESHOLD (1 << 16)
Kamailio 6.0.0 with gcc 14.2.0
/home/builder/kamailio_src/src/modules/nghttp2 # lsb_release -a
No LSB modules are available.
Distributor ID: Alpine
Description: Alpine Linux v3.21
Release: 3.21.2
Codename: n/a
/home/builder/kamailio_src/src/modules/nghttp2 # uname -a
Linux 89562285153f 5.15.167.4-microsoft-standard-WSL2 #1 SMP Tue Nov 5 00:21:55 UTC 2024 x86_64 Linux
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.