Credo di aver trovato una risposta.
Sembra che have_header esamina il percorso di inclusione del sistema. Se le variabili di ambiente rilevanti non sono impostate, i percorsi di inclusione predefiniti sono /usr/local/include e /usr/include .
Se vuoi impostarli manualmente, dovresti fare qualcosa del tipo:
export C_INCLUDE_PATH=/usr/include/mysql/
Questo è vero anche se stai compilando un programma C++, se il file di intestazione è un file C. Se, d'altra parte, il tuo file di intestazione è C++, non C, dovresti fare:
export CPLUS_INCLUDE_PATH=/usr/include/mysql
Naturalmente, hai trovato la soluzione alternativa, che consiste nell'includere dir_config('mysql') nel tuo extconf.rb . Ciò ti consente di utilizzare --with-mysql-include opzione e fornire il percorso manualmente.
Ecco la mia fonte:https://www.network-theory.co .uk/docs/gccintro/gccintro_23.html
Ed ecco una versione più generale della stessa domanda (con risposte):Come aggiungere un percorso di inclusione predefinito per gcc in linux?