Myślę, że znalazłem odpowiedź.
Wygląda na to, że have_header patrzy na system zawiera ścieżkę. Jeśli odpowiednie zmienne środowiskowe nie są ustawione, domyślne ścieżki dołączania to /usr/local/include i /usr/include .
Jeśli chcesz ustawić je ręcznie, możesz zrobić coś takiego:
export C_INCLUDE_PATH=/usr/include/mysql/
To prawda, nawet jeśli kompilujesz program w C++, jeśli plik nagłówkowy jest plikiem C. Z drugiej strony, jeśli twój plik nagłówkowy jest w C++, a nie w C, powinieneś zrobić:
export CPLUS_INCLUDE_PATH=/usr/include/mysql
Oczywiście znalazłeś obejście, które polega na uwzględnieniu dir_config('mysql') w swoim extconf.rb . Dzięki temu możesz użyć --with-mysql-include i podaj ścieżkę ręcznie.
Oto moje źródło:https://www.network-theory.co .uk/docs/gccintro/gccintro_23.html
A oto bardziej ogólna wersja tego samego pytania (z odpowiedziami):Jak dodać domyślną ścieżkę include dla gcc w linuksie?