Potrzebuję miejsca do zainstalowania bibliotek w Linuksie, do którego nie mam dostępu su. Używam ~ / local [/ bin, / lib, / include], ale nie wiem jak mogę powiedzieć ./configure szukać tam bibliotek (szczególnie próbuję skompilować emacs, który wymaga libgif , który nie jest dostępny w mojej dystrybucji).
Próbowałem dodać
export PATH=$PATH:~/local/bin
export LD_LIBRARY_PATH=~/local/lib
export C_INCLUDE_PATH=~/local/include
export CPLUS_INCLUDE_PATH=~/local/include
do .bashrc, ale wygląda na to, że nie działa.
export C_INCLUDE_PATH=~/local/include:$C_INCLUDE_PATH
, Twój kompilator będzie szukał najpierw w~/local/include
, a w $ C_INCLUDE_PATH tylko wtedy, gdy nie znalazł uwzględnienia w pierwszym katalogu.Odpowiedzi:
Chcesz plik config.site. Próbować:
Za każdym razem, gdy wywołasz skrypt konfiguracyjny wygenerowany przez autoconf z opcją --prefix = $ HOME / local, plik config.site zostanie odczytany i wszystkie przypisania zostaną wykonane za Ciebie. CPPFLAGS i LDFLAGS powinny być wszystkim, czego potrzebujesz, ale możesz również wykonać dowolne inne pożądane przypisania (stąd ... w powyższym przykładzie). Zauważ, że flagi -I należą do CPPFLAGS, a nie do CFLAGS, ponieważ -I jest przeznaczone dla preprocesora, a nie kompilatora.
źródło
Ustaw LDFLAGS i CFLAGS podczas uruchamiania make:
$ LDFLAGS="-L/home/me/local/lib" CFLAGS="-I/home/me/local/include" make
Jeśli nie chcesz tego robić miliardy razy, wyeksportuj je do swojego .bashrc (lub odpowiednika w powłoce). Ustaw również LD_LIBRARY_PATH tak, aby zawierał / home / me / local / lib:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/local/lib
źródło
/home/tneme/Descargas/emacs-23.3': configure: error: C compiler cannot create executables See
config.log 'po więcej szczegółów tZajęło to trochę czasu, zanim było dobrze. Miałem ten problem podczas kompilacji krzyżowej w Ubuntu dla celu ARM. Rozwiązałem to za pomocą:
PATH=$PATH:/ccpath/bin CC=ccname-gcc AR=ccname-ar LD=ccname-ld CPPFLAGS="-nostdinc -I/ccrootfs/usr/include ..." LDFLAGS=-L/ccrootfs/usr/lib ./autogen.sh --build=`config.guess` --host=armv5tejl-unknown-linux-gnueabihf
Zauważ, że CFLAGS nie jest używany z autogen.sh/configure, użycie go spowodowało błąd: "configure: błąd: kompilator C nie może tworzyć plików wykonywalnych". W środowisku budowania użyłem skryptu autogen.sh, jeśli nie masz substytutu skryptu autogen.sh ./autogen.sh z ./configure w powyższym poleceniu. Uruchomiłem config.guess w systemie docelowym, aby uzyskać parametr --host.
Po pomyślnym uruchomieniu autogen.sh/configure, skompiluj z:
PATH=$PATH:/ccpath/bin CC=ccname-gcc AR=ccname-ar LD=ccname-ld CPPFLAGS="-nostdinc -I/ccrootfs/usr/include ..." LDFLAGS=-L/ccrootfs/usr/lib CFLAGS="-march=... -mcpu=... etc." make
Wybrane przeze mnie CFLAGS to: "-march = armv5te -fno-tree-vectorize -mthumb-interwork -mcpu = arm926ej-s". Prawidłowe skonfigurowanie wszystkich katalogów plików nagłówkowych zajmie trochę czasu: możesz chcieć, aby niektóre z nich wskazywały na Twój cross-kompilator, a inne na pliki głównego systemu plików i prawdopodobnie wystąpią pewne konflikty.
Jestem pewien, że to nie jest doskonała odpowiedź. I nadal widzę, że niektóre zawierają katalogi wskazujące / a nie / ccrootfs w plikach Makefiles. Chciałbym wiedzieć, jak to naprawić. Mam nadzieję, że to komuś pomoże.
źródło