Почему gcc не работает с "нераспознанной опцией командной строки"-L/lusr/opt/mpfr-2.4.2/lib""?
Мой системный администратор недавно установил новую версию GCC в /lusr/opt/gcc-4.4.3. Я проверил это следующим образом:
mike@canon:~$ cat test.c
int main(){
return 0;
}
mike@canon:~$ gcc test.c
/lusr/opt/gcc-4.4.3/libexec/gcc/i686-pc-linux-gnu/4.4.3/cc1: error while loading shared libraries: libmpfr.so.1: cannot open shared object file: No such file or directory
Сообщив об этом моему сисадмину, он сказал добавить /lusr/opt/mpfr-2.4.2/lib:/lusr/opt/gmp-4.3.2/lib
к моему LD_LIBRARY_PATH
, После этого я получаю следующую ошибку:
mike@canon:~$ gcc test.c
cc1: error: unrecognized command line option "-L/lusr/opt/mpfr-2.4.2/lib"
Во-первых, мой системный администратор не был полностью уверен, что это лучший обходной путь (хотя он и сказал, что он работает для него...), так есть ли лучшее решение?
Во-вторых, почему я получаю ошибку компоновщика от cc
и как я могу это исправить?
Некоторая информация, которая может быть полезна:
mike@canon:~$ env | grep mpfr
OLDPWD=/lusr/opt/mpfr-2.4.2/lib
LD_LIBRARY_PATH=/lusr/opt/mpfr-2.4.2/lib:/lusr/opt/gmp-4.3.2/lib:
mike@canon:~$ echo $LDFLAGS
(the above is a blank line)
2 ответа
Я бы предположил, что ваш системный администратор должен установить библиотеки GMP и MPFR со сборочной машины в то же место на вашей машине. (Существует также библиотека MPC, которая может вам также понадобиться.) В качестве альтернативы вашему системному администратору необходимо установить пересборку GCC - предпочтительно версии 4.5.2, поскольку она является (AFAIK) текущей - с правильными настройками, в которых библиотеки GMP и MPFR будут быть установленным на вашей машине.
Вам не нужно устанавливать LD_LIBRARY_PATH для использования GCC. Если вам нужно сделать это, это означает, что он не был создан для машины, на которой он работает. Ключевые библиотеки отсутствуют.
Чтобы продолжить отладку, вам, вероятно, нужно использовать:
gcc -v test.c
Это покажет вам выполненные командные строки. Там нет вызова для -L
опция (которая влияет на способ связывания программ) для передачи в компилятор фазы 1.
Это похоже на синтаксический разбор аргументов gcc (он не должен жаловаться на -Lfoo).
Можете ли вы попробовать настройки
LD_LIBRARY_PATH=\ /lusr/opt/mpfr-2.4.2/lib:/lusr/opt/gmp-4.3.2/lib
чтобы перед этим путем к библиотеке mpfr был пробел?