【问题标题】:Fatal error: 'readline/readline.h' file not found致命错误:找不到“readline/readline.h”文件
【发布时间】: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


【解决方案1】:

我重新安装了 readline,这解决了问题。

【讨论】:

    猜你喜欢
    • 2014-05-29
    • 2020-10-02
    • 2015-01-20
    • 2014-12-21
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 2022-07-13
    • 1970-01-01
    相关资源
    最近更新 更多