Я пытаюсь скомпилировать пакет R, который использует стороннюю библиотеку.Я использую autoconf для настройки пакета.Это работает, как и ожидалось, в Ubuntu (18.04) и более ранних версиях MacOS, но не работает на новом компьютере, использующем Mojave.
Autoconf - версия 2.69 (я использую MacPorts, а не homebrew).Это та же версия autoconf, которая работает в Linux.
Здесь configure.ac
:
# An input file for autoconf to configure
#
#
AC_INIT([RNetica], 1.1) dnl RNetica, 1.1-8
dnl DEFAULT_NETICA_HOME="/home/ralmond/software/Netica_API_504"
dnl DEFAULT_NETICA_HOME="/opt/Netica_API_504"
AC_ARG_WITH([netica],
AC_HELP_STRING([--with-netica=PATH],
[the path to the Netica API directory]),
[NETICA_HOME=${withval}]
)
echo "++++++++++++++++++++++++"
echo "Netica Home is ${NETICA_HOME}"
if test -z "${NETICA_HOME}" ; then
echo "Using pkg-config for Netica"
PKG_CHECK_MODULES([NETICA],[Netica],
[NETICA_HOME = "${NETICA_EXEC_PREFIX}"],
[AC_MSG_ERROR([Netica package not supplied with --with-netica, with NETICA_HOME variable or pkg-config])])
else
echo "Using NETICA_HOME for Netica"
NETICA_LIB="${NETICA_HOME}/lib"
dnl Netica has non-standard path to lib64 directory.
AC_CHECK_SIZEOF([long])
AS_IF([test $ac_cv_sizeof_long -eq 8],
[NETICA_LIB="${NETICA_HOME}/lib/64bit"])
dnl Fallback for MacOS X which does not have a separate 64 bit directory
if test ! -d "${NETICA_LIB}"; then
NETICA_LIB="${NETICA_HOME}/lib"
fi
AC_DEFINE([NETICA_LIBS],"-L${NETICA_LIB} -lnetica")
NETICA_INCDIR="${NETICA_HOME}/src"
AC_DEFINE([NETICA_CFLAGS],"-I${NETICA_INCDIR}")
fi
AC_SUBST(NETICA_LIBS)
AC_SUBST(NETICA_CFLAGS)
echo "****************************************"
echo "Configuration information:"
echo ""
echo "Netica settings"
echo ""
echo "R Architecture: ${R_ARCH}"
echo "Netica API DIRECTORY: ${NETICA_HOME}"
echo "Netica Lib Flags: ${NETICA_LIBS}"
echo "Netica CFlags Directory: ${NETICA_CFLAGS}"
echo ""
echo "Compilation flags: ${PKG_CFLAGS} ${LANGUAGE_DEFS}"
echo "Link flags: ${PKG_LIBS}"
AC_OUTPUT(src/Makevars)
#chmod +x cleanup
Здесь Makvars.in
PKG_LIBS= @NETICA_LIBS@ -lstdc++
PKG_CFLAGS= -I. @NETICA_CFLAGS@
Я ожидаючто @ NETICA_LIBS @ и @ NETICA_CFLAGS @ будут заменены установочным каталогом сторонней библиотеки.Фактически, Makevars - это:
PKG_LIBS= @NETICA_LIBS@ -lstdc++
PKG_CFLAGS= -I. @NETICA_CFLAGS@
Таким образом, замена не была сделана.(Это работает, как и ожидалось в Ubuntu.)
Вот более длинный вывод цикла сборки.
bash-3.2$ R CMD INSTALL RNetica --configure-args='--with-netica=/Users/ralmond/software/Netica_API_504'
* installing to library ‘/Users/ralmond/Library/R/3.5/library’
* installing *source* package ‘RNetica’ ...
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking size of long... 8
****************************************
Configuration information:
Netica settings
R Architecture:
Netica API DIRECTORY: /Users/ralmond/software/Netica_API_504
Netica Lib DIRECTORY: /Users/ralmond/software/Netica_API_504/lib
Netica Include Directory: /Users/ralmond/software/Netica_API_504/src
Compilation flags:
Link flags:
configure: creating ./config.status
config.status: creating src/Makevars
** libs
/usr/bin/clang -I"/opt/local/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I/opt/local/include -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -I. @NETICA_CFLAGS@ -fPIC -pipe -Os -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -arch x86_64 -c Cases.c -o Cases.o
clang: error: no such file or directory: '@NETICA_CFLAGS@'
make: *** [Cases.o] Error 1
ERROR: compilation failed for package ‘RNetica’
Полный пакет можно загрузить с https://pluto.coe.fsu.edu/RNetica