Мой скомпилированный GNU GCC 9 в Solaris 10 SPARC не работает - PullRequest
0 голосов
/ 24 июня 2019

Я успешно скомпилировал GNU GCC-9.1.0 в ОС Solaris 10 SPARC на моем сервере Sun / Oracle SPARC. Однако мне пришлось скопировать файлы статических библиотек libgmp.so, libmfr.so и libmpc.so в следующие каталоги, созданные в процессе 'gmake' GCC-9.1.0 / хост-СПАРК-ВС-solaris2.10 / ССАГПЗ GCC-9.1.0 / хост-СПАРК-ВС-solaris2.10 / пред-НКУ

У меня теперь есть проблема, когда я пытаюсь с помощью команды «./configure» сконфигурировать любой архив tarball, содержащий исходные файлы кода C. Когда я набираю «./configure», я получаю сообщение об ошибке «Компилятор C не работает, подробности см. В файле config.log». Я загрузил соответствующий файл config.log, созданный по следующему URL. В нем упоминается, что отсутствует файл статической библиотеки с именем 'libmpc.so.3, однако файл библиотеки находится в каталоге / usr / local / lib. Как мне разрешить эту ситуацию? Я буду признателен за любую помощь, оказанную мне

configure:2912: gcc -v >&5
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/sparc-sun-solaris2.10/9.1.0/lto-wrapper
Target: sparc-sun-solaris2.10
Configured with: ./configure --enable-obsolete --with-gmp-lib=/usr/local/lib --with-mpfr-lib=/usr/local/lib --with-mpc-lib=/usr/local/lib
...[snip]...
configure:2975: gcc    conftest.c  >&5
ld.so.1: cc1: fatal: libmpc.so.3: open failed: No such file or directory
gcc: fatal error: Killed signal terminated program cc1
compilation terminated.
configure:2978: $? = 1
configure:3016: result: 
configure: failed program was:
| /* confdefs.h.  */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| /* end confdefs.h.  */
| 
| int
| main ()
| {
| 
|   ;
|   return 0;
| }
configure:3023: error: C compiler cannot create executables

(полный config.log находится на http://tab140.freewebspace.com/config-gcc9.txt)

1 Ответ

2 голосов
/ 24 июня 2019

cc1 (собственно исполняемый файл компилятора) зависит от динамической библиотеки libmpc.so.3.

См.

ldd `gcc --print-file-name cc1`

Это должно показать вам, что mpc и другие библиотеки не найдены. Это связано с тем, что /usr/local/lib не указан в пути к общей библиотеке времени выполнения, и вы должны убедиться, что он указан. Один вариант - временно положить его туда: попробуйте

LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ldd `gcc --print-file-name cc1`  

Если сообщения «not found» пропали во втором выводе, вы можете поставить перед всеми вашими командами, включая gcc (например, ./configure, gmake и т. Д.), Префикс LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH. В качестве альтернативы вы можете export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH, но это все равно будет работать только для текущего сеанса оболочки. Чтобы сделать изменения постоянными, вы можете добавить команду экспорта в свой профиль (например, ~/.bashrc файл для bash, я не знаю, какую оболочку вы используете).


GCC содержит руководство по установке , которое документирует опцию --with-mpc-lib среди прочего:

'--with-gmp=PATHNAME'
'--with-gmp-include=PATHNAME'
'--with-gmp-lib=PATHNAME'
'--with-mpfr=PATHNAME'
'--with-mpfr-include=PATHNAME'
'--with-mpfr-lib=PATHNAME'
'--with-mpc=PATHNAME'
'--with-mpc-include=PATHNAME'
'--with-mpc-lib=PATHNAME'
     If you want to build GCC but do not have the GMP library, the MPFR
     library and/or the MPC library installed in a standard location and
     do not have their sources present in the GCC source tree then you
     can explicitly specify the directory where they are installed
     ('--with-gmp=GMPINSTALLDIR', '--with-mpfr=MPFRINSTALLDIR',
     '--with-mpc=MPCINSTALLDIR').  The '--with-gmp=GMPINSTALLDIR' option
     is shorthand for '--with-gmp-lib=GMPINSTALLDIR/lib' and
     '--with-gmp-include=GMPINSTALLDIR/include'.  Likewise the
     '--with-mpfr=MPFRINSTALLDIR' option is shorthand for
     '--with-mpfr-lib=MPFRINSTALLDIR/lib' and
     '--with-mpfr-include=MPFRINSTALLDIR/include', also the
     '--with-mpc=MPCINSTALLDIR' option is shorthand for
     '--with-mpc-lib=MPCINSTALLDIR/lib' and
     '--with-mpc-include=MPCINSTALLDIR/include'.  If these shorthand
     assumptions are not correct, you can use the explicit include and
     lib options directly.  You might also need to ensure the shared
     libraries can be found by the dynamic linker when building and
     using GCC, for example by setting the runtime shared library path
     variable ('LD_LIBRARY_PATH' on GNU/Linux and Solaris systems).
...