sbcl-1.0.31 relocation X86_64_32S
bronislav 27 октября, 2009 - 23:37
Я хочу установить sbcl-1.0.31 на мою Hardened Gentoo, но возникает странная проблема.
Т.к. sbcl-1.0.31 требует vanilla компилятора, то я сделал небольшой хак. Код ниже я поместил в файл:
/etc/portage/env/dev-lisp/sbcl
pre_pkg_setup () { gcc-config 3 source /etc/profile } pre_src_compile () { local sbcl_bin="${WORKDIR}"/sbcl-binary/src/runtime/sbcl paxctl -c "${sbcl_bin}" paxctl -p -e -m -r -x -s "${sbcl_bin}" } post_pkg_postinst () { gcc-config 1 source /etc/profile }
Запустив процесс установки
# emerge -av sbcl
я получаю ошибку:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4/../../../../x86_64-pc-linux-gnu/bin/ld: x86-64-assem.o: relocation R_X86_64_32S against `all_threads' can not be used when making a shared object; recompile with -fPIC x86-64-assem.o: could not read symbols: Bad value collect2: ld returned 1 exit status make: *** [sbcl] Error 1 make: Leaving directory `/var/tmp/portage/dev-lisp/sbcl-1.0.31/work/sbcl-1.0.31/src/runtime'
После жто пробую следующее:
# cd /var/tmp/portage/dev-lisp/sbcl-1.0.31/work/sbcl-1.0.31/ # source /etc/profile # make -C src/runtime all
И компиляция проходит успешно.
Если использовать профиль hardenednopie, то компиляция успешна даже так:
# make -C /var/tmp/portage/dev-lisp/sbcl-1.0.31/work/sbcl-1.0.31/src/runtime all
Куда копать? Может какие-то переменные окружения отличаются во время emerge и вне emerge? Как это проверить?
»
- Для комментирования войдите или зарегистрируйтесь
pre_pkg_setup () {
Почему просто не переключить компилятор ?
И
Не пробовали делать, алсо , не просто так оно просит ванилла.
Чего вы хотите добиться в результате ? , сборки с дефолтным (харденед ) спеком ?
лесс /var/db/pkg/<категория>/<пакет>/environment.bz
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
slepnoga написал(а): Почему
А я что делаю? Переключаю компилятор на vanilla и после установки пакета переключаю на hardened.
Поробовал довавлять флаг для всего пакета - не помогло.
Посмотрю.
upd: По указанной ссылке environment установленных пакетов, а мне необходимо текущее окружение, чтобы понять почему вручную собирает (даже без -fPIC), а emerge не собирает