Jak dodać ścieżki include i lib, aby skonfigurować / utworzyć cykl?

Potrzebuję miejsca do instalacji bibliotek w Linuksie, do którego nie mam dostępu su. Używam ~ / local [/bin, / lib, / include], ale nie wiem, jak Mogę to powiedzieć ./ configure, aby szukać tam bibliotek (szczególnie próbuję skompilować Emacsa, który potrzebuje libgif, który nie wchodzi w moje distro).

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 to chyba nie działa.

Author: Mateusz Piotrowski, 2011-09-27

3 answers

Chcesz config.plik strony. Try:

$ mkdir -p ~/local/share
$ cat << EOF > ~/local/share/config.site
CPPFLAGS=-I$HOME/local/include
LDFLAGS=-L$HOME/local/lib
...
EOF

Za każdym razem, gdy wywołujesz wygenerowany automatycznie skrypt configure z --prefix= $ HOME / local, Config.strona zostanie przeczytana i wszystkie zadania zostaną wykonane dla Ciebie. CPPFLAGS i LDFLAGS powinny być wszystkim, czego potrzebujesz, ale możesz również wykonać inne pożądane zadania (stąd ... w próbce powyżej). Zauważ, że flagi-I należą do CPPFLAGS, a nie do CFLAGS, ponieważ-i jest przeznaczone dla pre-procesora, a nie kompilatora.

 78
Author: William Pursell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-01 08:33:39

Ustaw LDFLAGS i CFLAGS po uruchomieniu make:

$ LDFLAGS="-L/home/me/local/lib" CFLAGS="-I/home/me/local/include" make
Jeśli nie chcesz tego robić miliard razy, wyeksportuj je do swojego .bashrc (lub odpowiednik powłoki). Ustaw również LD_LIBRARY_PATH na / home / me/local / lib:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/local/lib
 25
Author: long404,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-19 02:58:14

Trochę to trwało,zanim się udało. Miałem ten problem podczas kompilacji krzyżowej w Ubuntu dla celu ARM. Rozwiązałem 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 ./autogen.sh --build=`config.guess` --host=armv5tejl-unknown-linux-gnueabihf

Uwaga CFLAGS nie jest używany z autogen.sh/configure, używanie go dało mi błąd: "configure: error: C compiler cannot create executables". W środowisku build używałem autogen.sh skrypt został dostarczony, jeśli nie masz autogen.sh substytut skryptu ./autogen.sh z ./ configure w Komendzie powyżej. Uruchomiłem config.Odgadnij system docelowy do Pobierz parametr -- host.

Po pomyślnym uruchomieniu autogen.sh/configure, Kompiluj 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

CFLAGS, które wybrałem to: "-march=armv5te-FNO-tree-vectorize-mthumb-interwork-mcpu=arm926ej-S". Poprawne skonfigurowanie wszystkich katalogów include zajmie trochę czasu: możesz chcieć, aby niektóre includes wskazywały na Twój kompilator krzyżowy, a niektóre wskazywały na twój główny system 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 na /a nie / ccrootfs w plikach Makefile. Chciałbym wiedzieć, jak to poprawić. Mam nadzieję, że to komuś pomoże.

 8
Author: Samuel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-24 20:06:02