Es liegt in der Verantwortung des Benutzers, dem configure-Skript mitzuteilen, wo sich die Bibliotheken befinden. Es gibt viele Optionen für den Benutzer verfügbar, mit dem der gängigste:
configure LDFLAGS=-L/p/a/t/h
Es gibt absolut keinen Grund für den Betreuer des Build-Skripte überhaupt zu ändern, um einen Benutzer zu diesem Punkt zu empfangen, und viele gute Gründe für nicht versuchen, etwas zu tun. Wenn Sie (als Benutzer) feststellen, dass sich Ihre Bibliotheken an vielen Orten befinden, können Sie LDFLAGS in Ihrer Umgebung oder in einer config.site einstellen. Ihre Toolchain hat wahrscheinlich andere Mechanismen (zB wenn Sie gcc verwenden, können Sie einfach LIBRARY_PATH setzen). Die von autoconf bereitgestellte Infrastruktur bietet bereits zahlreiche Mechanismen, um mit diesem Problem umzugehen, und der Paketbetreuer ist besser darin, das Rad nicht neu zu erfinden und nicht standardisierte Schnittstellen bereitzustellen.
Jetzt, wo ich argumentiert habe, dass Sie nicht tun sollten, was Sie versuchen zu tun, werde ich Ihnen sagen, wie es geht. AC_CHECK_LIB den Wert in LDFLAGS für die Suche verwenden, so können Sie dies tun:
LDFLAGS="$LDFLAGS $CPLEX_LIBS" # this is a bug
und das ist falsch, weil Sie jetzt eine -l
Flagge in LDFLAGS, aber -l
Argumente gehören in LIBS
. Auch wenn Sie eine andere Bibliothek, libfoo und $ FOO_LIBS haben, die auf einen anderen Ort zeigen, gibt es einfach keine Möglichkeit zu disambiguieren: LDFLAGS erhält -L/cplex und -L/foo und der Benutzer wird nicht wissen, welche kommt zuerst und wird nicht in der Lage sein, die Verknüpfung mit einer Bibliothek gegenüber der anderen zu garantieren. Kurz gesagt, verwenden Sie nicht CPLEX_LIBS: Erziehen Sie Ihren Benutzer zur Verwendung von LDFLAGS. Auch ist es bequemer, um Typ:
configure LDFLAGS='-Lpath1 -Lpath2'
als
configure --with-cplex=path1 --with-foo=path2
und letztere verschleiert Dinge zu geben und führt zu einer ungebildeten Bevölkerung. Ich habe nie verstanden, warum Leute diese Optionen --with-lib =/p/a/t/h in ihre Builds einbauen: Sie bieten nichts Nützliches.