Ich glaube, ich habe eine Antwort gefunden.
Es scheint, dass have_header
betrachtet den System-Include-Pfad. Wenn die relevanten Umgebungsvariablen nicht gesetzt sind, lauten die standardmäßigen Include-Pfade /usr/local/include
und /usr/include
.
Wenn Sie sie manuell festlegen möchten, würden Sie Folgendes tun:
export C_INCLUDE_PATH=/usr/include/mysql/
Das gilt auch dann, wenn Sie ein C++-Programm kompilieren, wenn die Header-Datei eine C-Datei ist. Wenn andererseits Ihre Header-Datei C++ und nicht C ist, würden Sie Folgendes tun:
export CPLUS_INCLUDE_PATH=/usr/include/mysql
Natürlich haben Sie den Workaround gefunden, der darin besteht, dir_config('mysql')
einzubinden in Ihrer extconf.rb
. Dadurch können Sie --with-mysql-include
verwenden Option und geben Sie den Pfad manuell ein.
Hier ist meine Quelle:http://www.network-theory.co .uk/docs/gccintro/gccintro_23.html
Und hier ist eine allgemeinere Version derselben Frage (mit Antworten):Wie füge ich einen standardmäßigen Include-Pfad für gcc unter Linux hinzu?