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:http://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?