【发布时间】:2022-01-17 23:16:53
【问题描述】:
我正在尝试使用 Autotools 为 iPhoneOS 平台编译 FreeTDS。但是,我得到了错误:
Making all in fisql
CC fisql.o
fisql.c:29:10: fatal error: 'readline/readline.h' file not found
#include <readline/readline.h>
^~~~~~~~~~~~~~~~~~~~~
1 error generated.
make[3]: *** [fisql.o] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1
我正在使用 shell 脚本来运行命令:
#!/bin/sh
VERSION="1.3"
SDKVERSION="14.0"
TARGETSDKVERSION="11.0"
LIB="freetds"
DEVELOPER=`xcode-select -print-path`
ARCHS="arm64"
CURRENTPATH=`pwd`
BUILD="x86_64-apple-darwin19.6.0"
OLD_PATH=$PATH
TDS_VER=7.4
cd ${LIB}-${VERSION}
unset CC
unset CFLAGS
unset CXXFLAGS
unset LDFLAGS
unset LD
unset CPP
for ARCH in ${ARCHS}
do
case "${ARCH}" in
"x86_64")
PLATFORM="MacOSX"
HOST="${ARCH}-apple-darwin19.6.0"
;;
"arm64")
PLATFORM="iPhoneOS"
HOST="aarch64-apple-darwin19.6.0"
;;
*)
PLATFORM="iPhoneOS"
HOST="${ARCH}-apple-darwin19.6.0"
;;
esac
SDK="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer/SDKs/${PLATFORM}${SDKVERSION}.sdk"
export CC="clang"
export CFLAGS="-arch ${ARCH} -isysroot ${SDK} -miphoneos-version-min=11.0"
export CXXFLAGS="$CFLAGS"
export LDFLAGS="$CFLAGS"
export LD=$CC
# export CFLAGS="-arch ${ARCH} -miphoneos-version-min=${TARGETSDKVERSION} -isysroot ${SDK}"
PREFIX="${CURRENTPATH}/build/${LIB}/${ARCH}"
mkdir -p ${PREFIX}
echo "Please stand by..."
./configure --prefix=$PREFIX --host=${HOST} -build=${BUILD} -with-tdsver=${TDS_VER} CFLAGS="${CFLAGS}"
echo "======== NOW LETS MAKE ========"
make clean
make && make install
echo "======== CHECK ARCH ========"
xcrun -sdk iphoneos lipo -info ${PREFIX}/lib/libsybdb.a
echo "======== CHECK DONE ========"
done
echo "== We just need static library == "
echo "== Copy headers to fat folder from i386 folder AND clean files in lib =="
cp -r ${CURRENTPATH}/build/${LIB}/i386/ ${CURRENTPATH}/build/${LIB}/Fat
rm -rf ${CURRENTPATH}/build/${LIB}/Fat/lib/*
echo "Build library - libsybdb.a"
lipo -create ${CURRENTPATH}/build/${LIB}/i386/lib/libsybdb.a ${CURRENTPATH}/build/${LIB}/armv7/lib/libsybdb.a ${CURRENTPATH}/build/${LIB}/armv7s/lib/libsybdb.a ${CURRENTPATH}/build/${LIB}/arm64/lib/libsybdb.a ${CURRENTPATH}/build/${LIB}/x86_64/lib/libsybdb.a -output ${CURRENTPATH}/build/${LIB}/Fat/lib/libsybdb.a
echo "======== CHECK FAT ARCH ========"
xcrun -sdk iphoneos lipo -info ${CURRENTPATH}/build/${LIB}/Fat/lib/libsybdb.a
echo "======== CHECK DONE ========"
echo "== Done =="
我尝试通过使用 home-brew 安装 readline 来修复它,但到目前为止没有运气。 我了解无法找到该文件(或者它不在应有的位置),但我该如何修复它?
【问题讨论】:
-
您的配置脚本应该检查 readline.h。检查输出。也许您的包含路径中缺少目录,请尝试 make V=1 以获得详细输出。没有 Makefile 很难调试
-
你真的需要在 iOS 上使用 readline(可能是交互式控制台程序)的 FreeTDS 部分吗?您也许可以
--disable-该部分而不是构建它。 -
谢谢@ndim,我通过重新安装 readline 修复了它,但我遇到了一个新错误。你介意看看here吗?
标签: shell unix autotools freetds