Сбой настройки HDF-EOS, компилятор C не может создавать исполняемые файлы

Я пытаюсь установить библиотеку HDF-EOS C с помощью ./configure, и во время выполнения configure я получаю следующий вывод:

./configure CC=/usr/local/hdf-4.2.12-linux-centos7-x86_64/bin/h4cc
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for style of include used by make... GNU
checking for gcc... /usr/local/hdf-4.2.12-linux-centos7-x86_64/bin/h4cc
checking for C compiler default output file name... 
configure: error: C compiler cannot create executables
See `config.log' for more details.

config.log:

This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by hdf-eos2 configure 4.2, which was
generated by GNU Autoconf 2.61.  Invocation command line was

  $ ./configure CC=/usr/local/hdf-4.2.12-linux-centos7-x86_64/bin/h4cc

## --------- ##
## Platform. ##
## --------- ##

hostname = kali
uname -m = x86_64
uname -r = 4.3.0-kali1-amd64
uname -s = Linux
uname -v = #1 SMP Debian 4.3.3-5kali4 (2016-01-13)

/usr/bin/uname -p = unknown
/bin/uname -X     = unknown

/bin/arch              = unknown
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo      = unknown
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /usr/sbin
PATH: /usr/bin
PATH: /sbin
PATH: /bin
PATH: /usr/local/hdf5/bin
PATH: /usr/local/hdf4-4.2.12/bin
PATH: /usr/local/hdf5/bin
PATH: /usr/local/hdf4-4.2.12/bin
PATH: /usr/local/hdf-4.2.12-linux-centos7-x86_64/bin/h4cc
PATH: /usr/local/hdf5/bin


## ----------- ##
## Core tests. ##
## ----------- ##

configure:2022: checking for a BSD-compatible install
configure:2078: result: /usr/bin/install -c
configure:2089: checking whether build environment is sane
configure:2132: result: yes
configure:2197: checking for gawk
configure:2227: result: no
configure:2197: checking for mawk
configure:2213: found /usr/bin/mawk
configure:2224: result: mawk
configure:2235: checking whether make sets $(MAKE)
configure:2256: result: yes
configure:2440: checking whether to enable maintainer-specific portions of Makefiles
configure:2449: result: no
configure:2546: checking build system type
configure:2564: result: x86_64-unknown-linux-gnu
configure:2586: checking host system type
configure:2601: result: x86_64-unknown-linux-gnu
configure:2635: checking for style of include used by make
configure:2663: result: GNU
configure:2736: checking for gcc
configure:2763: result: /usr/local/hdf-4.2.12-linux-centos7-x86_64/bin/h4cc
configure:3001: checking for C compiler version
configure:3008: /usr/local/hdf-4.2.12-linux-centos7-x86_64/bin/h4cc --version >&5
gcc: error: /mnt/scr1/pre-release/hdf4/v4.2.12/thg-builds/moohan-static/lib/libmfhdf.a: No such file or directory
gcc: error: /mnt/scr1/pre-release/hdf4/v4.2.12/thg-builds/moohan-static/lib/libdf.a: No such file or directory
gcc (Debian 6.1.1-11) 6.1.1 20160802
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:3011: $? = 0
configure:3018: /usr/local/hdf-4.2.12-linux-centos7-x86_64/bin/h4cc -v >&5
gcc: error: /mnt/scr1/pre-release/hdf4/v4.2.12/thg-builds/moohan-static/lib/libmfhdf.a: No such file or directory
gcc: error: /mnt/scr1/pre-release/hdf4/v4.2.12/thg-builds/moohan-static/lib/libdf.a: No such file or directory
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 6.1.1-11' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 6.1.1 20160802 (Debian 6.1.1-11) 
configure:3021: $? = 1
configure:3028: /usr/local/hdf-4.2.12-linux-centos7-x86_64/bin/h4cc -V >&5
gcc: error: /mnt/scr1/pre-release/hdf4/v4.2.12/thg-builds/moohan-static/lib/libmfhdf.a: No such file or directory
gcc: error: /mnt/scr1/pre-release/hdf4/v4.2.12/thg-builds/moohan-static/lib/libdf.a: No such file or directory
gcc: error: unrecognized command line option '-V'
configure:3031: $? = 1
configure:3054: checking for C compiler default output file name
configure:3081: /usr/local/hdf-4.2.12-linux-centos7-x86_64/bin/h4cc    conftest.c  >&5
gcc: error: /mnt/scr1/pre-release/hdf4/v4.2.12/thg-builds/moohan-static/lib/libmfhdf.a: No such file or directory
gcc: error: /mnt/scr1/pre-release/hdf4/v4.2.12/thg-builds/moohan-static/lib/libdf.a: No such file or directory
configure:3084: $? = 1
configure:3122: result: 
configure: failed program was:
| /* confdefs.h.  */
| #define PACKAGE_NAME "hdf-eos2"
| #define PACKAGE_TARNAME "hdf-eos2"
| #define PACKAGE_VERSION "4.2"
| #define PACKAGE_STRING "hdf-eos2 4.2"
| #define PACKAGE_BUGREPORT "[email protected]"
| #define PACKAGE "hdf-eos2"
| #define VERSION "4.2"
| /* end confdefs.h.  */
| 
| int
| main ()
| {
| 
|   ;
|   return 0;
| }
configure:3129: error: C compiler cannot create executables
See `config.log' for more details.

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_build=x86_64-unknown-linux-gnu
ac_cv_env_CCC_set=
ac_cv_env_CCC_value=
ac_cv_env_CC_set=set
ac_cv_env_CC_value=/usr/local/hdf-4.2.12-linux-centos7-x86_64/bin/h4cc
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_CXXCPP_set=
ac_cv_env_CXXCPP_value=
ac_cv_env_CXXFLAGS_set=
ac_cv_env_CXXFLAGS_value=
ac_cv_env_CXX_set=
ac_cv_env_CXX_value=
ac_cv_env_F77_set=
ac_cv_env_F77_value=
ac_cv_env_FCFLAGS_set=
ac_cv_env_FCFLAGS_value=
ac_cv_env_FC_set=
ac_cv_env_FC_value=
ac_cv_env_FFLAGS_set=
ac_cv_env_FFLAGS_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_LIBS_set=
ac_cv_env_LIBS_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_host=x86_64-unknown-linux-gnu
ac_cv_path_install='/usr/bin/install -c'
ac_cv_prog_AWK=mawk
ac_cv_prog_ac_ct_CC=/usr/local/hdf-4.2.12-linux-centos7-x86_64/bin/h4cc
ac_cv_prog_make_make_set=yes

## ----------------- ##
## Output variables. ##
## ----------------- ##

ACLOCAL='${SHELL} /usr/local/hdfeos/config/missing --run aclocal-1.9'
AMDEPBACKSLASH='\'
AMDEP_FALSE='#'
AMDEP_TRUE=''
AMTAR='${SHELL} /usr/local/hdfeos/config/missing --run tar'
AR=''
AUTOCONF='${SHELL} /usr/local/hdfeos/config/missing --run autoconf'
AUTOHEADER='${SHELL} /usr/local/hdfeos/config/missing --run autoheader'
AUTOMAKE='${SHELL} /usr/local/hdfeos/config/missing --run automake-1.9'
AWK='mawk'
CC='/usr/local/hdf-4.2.12-linux-centos7-x86_64/bin/h4cc'
CCDEPMODE=''
CFLAGS=''
CPP=''
CPPFLAGS=''
CXX=''
CXXCPP=''
CXXDEPMODE=''
CXXFLAGS=''
CYGPATH_W='echo'
DEFS=''
DEPDIR='.deps'
ECHO='echo'
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP=''
EXEEXT=''
F2CFORTRAN_32PTR_CONDITIONAL_FALSE=''
F2CFORTRAN_32PTR_CONDITIONAL_TRUE=''
F2CFORTRAN_90_CONDITIONAL_FALSE=''
F2CFORTRAN_90_CONDITIONAL_TRUE=''
F2CFORTRAN_CONDITIONAL_FALSE=''
F2CFORTRAN_CONDITIONAL_TRUE=''
F77=''
FC=''
FCFLAGS=''
FFLAGS=''
GREP=''
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_INCLUDE_CONDITIONAL_FALSE=''
INSTALL_INCLUDE_CONDITIONAL_TRUE=''
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM='${SHELL} $(install_sh) -c -s'
LDFLAGS=''
LIBOBJS=''
LIBS=''
LIBTOOL=''
LN_S=''
LTLIBOBJS=''
MAINT='#'
MAINTAINER_MODE_FALSE=''
MAINTAINER_MODE_TRUE='#'
MAKEINFO='${SHELL} /usr/local/hdfeos/config/missing --run makeinfo'
OBJEXT=''
PACKAGE='hdf-eos2'
PACKAGE_BUGREPORT='[email protected]'
PACKAGE_NAME='hdf-eos2'
PACKAGE_STRING='hdf-eos2 4.2'
PACKAGE_TARNAME='hdf-eos2'
PACKAGE_VERSION='4.2'
PATH_SEPARATOR=':'
RANLIB=''
SET_MAKE=''
SHELL='/bin/bash'
STRIP=''
SZIP_ENCODER_CONDITIONAL_FALSE=''
SZIP_ENCODER_CONDITIONAL_TRUE=''
TESTDRIVERS_CONDITIONAL_FALSE=''
TESTDRIVERS_CONDITIONAL_TRUE=''
VERSION='4.2'
ac_ct_CC='/usr/local/hdf-4.2.12-linux-centos7-x86_64/bin/h4cc'
ac_ct_CXX=''
ac_ct_F77=''
ac_ct_FC=''
am__fastdepCC_FALSE=''
am__fastdepCC_TRUE=''
am__fastdepCXX_FALSE=''
am__fastdepCXX_TRUE=''
am__include='include'
am__leading_dot='.'
am__quote=''
am__tar='${AMTAR} chof - "$$tardir"'
am__untar='${AMTAR} xf -'
bindir='${exec_prefix}/bin'
build='x86_64-unknown-linux-gnu'
build_alias=''
build_cpu='x86_64'
build_os='linux-gnu'
build_vendor='unknown'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
exec_prefix='NONE'
host='x86_64-unknown-linux-gnu'
host_alias=''
host_cpu='x86_64'
host_os='linux-gnu'
host_vendor='unknown'
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
install_sh='/usr/local/hdfeos/config/install-sh'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mandir='${datarootdir}/man'
mkdir_p='mkdir -p --'
oldincludedir='/usr/include'
pdfdir='${docdir}'
prefix='NONE'
program_transform_name='s,x,x,'
psdir='${docdir}'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target_alias=''

## ----------- ##
## confdefs.h. ##
## ----------- ##

#define PACKAGE_NAME "hdf-eos2"
#define PACKAGE_TARNAME "hdf-eos2"
#define PACKAGE_VERSION "4.2"
#define PACKAGE_STRING "hdf-eos2 4.2"
#define PACKAGE_BUGREPORT "[email protected]"
#define PACKAGE "hdf-eos2"
#define VERSION "4.2"

configure: exit 77

Проблема, похоже, происходит в заголовочном файле с именем «confdefs.h», а в файле config.log говорится, что программа не удалась. Я не знаю, в чем проблема, и я был бы очень признателен за любую помощь.

СПЕЦИФИКАЦИИ: Linux kali 4.3.0-kali1-amd64

#1 SMP Debian 4.3.3-5kali4 (13 января 2016 г.) x86_64 GNU/Linux

Гном 3.18.2

Кроме того, не обращайте внимания на то, что моя переменная PATH несколько раз ссылается на одно и то же место. Я исправлю это в ближайшее время.


person LTClipp    schedule 18.08.2016    source источник
comment
Вы пытались указать расположение libmfhdf и libdf?   -  person Ignacio Vazquez-Abrams    schedule 18.08.2016
comment
Я не. Однако я знаю, где они находятся, но как мне указать их местонахождение?   -  person LTClipp    schedule 18.08.2016
comment
Вы смотрели на варианты, которые предоставляет вам скрипт configure?   -  person Ignacio Vazquez-Abrams    schedule 18.08.2016


Ответы (1)


Похоже, проблема возникает в заголовочном файле с именем «confdefs.h».

confdefs.h создается сценарием configure для использования в его тестах. Это не ваша проблема.

и файл config.log говорит, что программа не удалась.

В частности, он сообщает вам, какая именно команда была запущена, и отображает созданные сообщения об ошибках и статус выхода. В частности, команда была

/usr/local/hdf-4.2.12-linux-centos7-x86_64/bin/h4cc conftest.c >&5

Это попытка использовать компилятор, который вы указали, установив переменную среды CC при запуске configure, которая ранее была идентифицирована как GCC на основе вывода при запуске с параметром --version.

И эти ошибки были выданы при неудачной компиляции:

gcc: ошибка: /mnt/scr1/pre-release/hdf4/v4.2.12/thg-builds/moohan-stati/lib/libmfhdf.a: нет такого файла или каталога

gcc: ошибка: /mnt/scr1/pre-release/hdf4/v4.2.12/thg-builds/moohan-static/lib/libdf.a: нет такого файла или каталога

Кажется, что они испускаются каждый раз, когда запускается назначенный компилятор. Они вызывают беспокойство отчасти потому, что диагностика, отмеченная как ошибка, всегда вызывает беспокойство, но также и потому, что она предполагает, что пакет HDF4, в котором находится сценарий h4cc, вероятно, неправильно установлен или неправильно настроен.

Более того, скрипт компилятора завершался со статусом выхода 1 (а не 0) и, по-видимому, не создавал скомпилированный выходной файл. Другие выходные данные предполагают, что, хотя это, вероятно, оболочка вокруг gcc, у него есть свой собственный набор параметров, которые он учитывает исключительно, отвергая все остальные, так что это не жизнеспособная замена общего назначения для gcc.

Я не уверен, почему вы пытаетесь заменить скрипт h4cc системным компилятором по умолчанию, и самое очевидное, что нужно попробовать, это не делать этого. Если вы запустите скрипт configure без определения переменной окружения CC или определите ее как путь к чистому бинарному файлу gcc, тогда скрипт configure будет работать намного лучше.

Также обратитесь к инструкциям по установке пакета, который вы пытаетесь собрать. Скорее всего, у них есть инструкции о том, как указать его на вашу установку HDF, что, вероятно, является одной из предполагаемых целей h4cc. Любые другие цели, такие как предоставление параметров компиляции для конкретной установки, должны быть отнесены к системе сборки пакета, который вы пытаетесь собрать.

person John Bollinger    schedule 18.08.2016
comment
Вау, это было в точку. Что я сделал, так это удалил строку CC, как вы сказали, и это решило проблему. Что мне интересно, так это то, что я следовал официальным инструкциям по установке, и в них очень четко указано используйте h4cc, но удаление этой строки позволяет программе успешно настроиться. Это не может быть проблемой с тем, как я установил HDF4, не так ли? h4cc правильно компилирует все мои программы на C, которые используют библиотеки HDF. - person LTClipp; 18.08.2016
comment
@UnclePutin, это абсолютно может быть проблемой из-за того, как вы установили HDF4, хотя это может быть нечто большее. Ваша установка HDF4 — как минимум h4cc — настроена для установки не в том месте, где она находится на самом деле. Во всяком случае, именно так я интерпретирую сообщения об ошибках, которые он продолжает выдавать. - person John Bollinger; 19.08.2016
comment
Оказывается, ты снова прав (с ума сошел). В процессе установки h4cc в файле readme говорится, что нужно запустить этот скрипт под названием h4redeploy, который обновит переменные среды до правильных местоположений, как только двоичные файлы будут в их окончательном расположении. Я не запускал этот скрипт. Однако h4redeploy в процессе изменения путей выдает мне эту ошибку: Update h4cc ... ./h4redeploy: 152 ./h4redeploy: ed: not found То же самое говорит и для инструмента h4fc. Я могу предоставить сценарий для вас, если хотите. Спасибо большое за вашу помощь. - person LTClipp; 19.08.2016
comment
ed — это имя одного из старейших текстовых редакторов, известных Unixdom. Немного удивительно, что он еще не установлен, потому что он настолько традиционен, а лишь немного, потому что он уже редко используется. Скорее всего, он доступен для вашей системы в одноименном пакете, который вы можете установить с помощью yum / dnf, если вы используете CentOS 7. - person John Bollinger; 19.08.2016