Projekt, nad którym pracuję, wykorzystuje niestandardowy system dystrybucji, który wewnętrznie pobiera i kompiluje biblioteki zależności. Ta skrytka uruchamia dla każdej biblioteki skrypt configure
, podając jako przedrostek wewnętrzny katalog systemu kompilującego. Następnie uruchamia make
i make install
, a następnie sprawdza zawartość, wyszukując katalog instalacyjny z plikiem lib/<mylib>.a
. Ten ostatni krok kończy się niepowodzeniem.Katalog lib w 64-bitowej dystrybucji OpenSuse
Próbując zrozumieć, co się dzieje, samodzielnie skompilowałem parę losowych bibliotek, w tym jedną, której jestem autorem. Zauważyłem, że pod moją dystrybucją (openSUSE, 64-bitowa) ścieżka instalacji nie jest wypełniona /lib
, ale zamiast niej jest /lib64
.
To jasne, że jest to ustawienie rozkładu, i jestem pewien, że to ustawienie dotyczy konfiguracji autotools wysyłanych z dystrybucji.
Czy istnieje sposób zmiany tego zachowania lub, alternatywnie, odczytania tej informacji z systemu (aby można było załatać wyżej wymieniony garnek)?
Dzięki za pomoc
UPDATE: dowiedziałem się o flagę --libdir
w configure
, więc myślę, że mogę rozwiązać mój problem. Nadal chciałbym wiedzieć, czy istnieje sposób na poznanie tego szczegółu z jakimś zapytaniem o dystrybucję (np. Przeczytaj jakiś plik konfiguracyjny).
Nie ma to nic wspólnego z autoconf w systemie, ponieważ nie działa autoconf. –
@WilliamPursell: Nie jestem, ale używam skryptu 'configure'. Domyślam się, że system kompilujący 'configure' może odczytać pewną konfigurację z systemu operacyjnego (na przykład jakiś plik w'/etc/') w celu ustalenia, gdzie system operacyjny powinien znaleźć biblioteki. – Dacav
Jeśli skrypt configure szuka w/etc /, jest to błąd w pakiecie. Nigdy nie widziałem zachowania, które opisujesz. Możliwe, że generujesz skrypty konfiguracyjne z poprawioną wersją autoconf. Czy skrypt configure zawiera linię "libdir = '$ {exec_prefix}/lib'"? –