首页 > 解决方案 > make:指定包依赖位置

问题描述

tldr:我怎么能告诉make使用 alibrary.a而不是在中搜索库/usr/local/Cellar/

我有 2 个 c 库(1 和 2)。我能够为所需的体系结构构建库 1,我想为库 2 做同样的事情。库 2 依赖于库 1。如果我要为我的个人计算机构建库 2,只需安装库 1 就足够了用 brew 然后为库 2 运行我的构建脚本。但是,由于我还必须为其他架构构建,所以它不会那样工作。

我已经成功地创建了library 1.a包含所有需要的架构的文件,但是我找不到任何关于如何make知道它应该与这个文件相关的信息。

for ARCH in ${ARCHS}
do
    if [ "${ARCH}" == "i386" ] || [ "${ARCH}" == "x86_64" ]; then
        PLATFORM="iPhoneSimulator"
        EXTRA_CFLAGS="-arch ${ARCH}"
        EXTRA_CONFIG="--host=x86_64-apple-darwin"
    else
        PLATFORM="iPhoneOS"
        EXTRA_CFLAGS="-arch ${ARCH}"
        EXTRA_CONFIG="--host=arm-apple-darwin"
    fi

    mkdir -p "${INTERDIR}/${PLATFORM}${SDKVERSION}-${ARCH}.sdk"

    ./configure --enable-float-approx --disable-shared --enable-static --with-pic --disable-extra-programs --disable-doc ${EXTRA_CONFIG} \
    --prefix="${INTERDIR}/${PLATFORM}${SDKVERSION}-${ARCH}.sdk" \
    LDFLAGS="$LDFLAGS ${OPT_LDFLAGS} -fPIE -miphoneos-version-min=${MINIOSVERSION} -L${OUTPUTDIR}/lib" \
    CFLAGS="$CFLAGS ${EXTRA_CFLAGS} ${OPT_CFLAGS} -fPIE -miphoneos-version-min=${MINIOSVERSION} -I${OUTPUTDIR}/include -isysroot ${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer/SDKs/${PLATFORM}${SDKVERSION}.sdk" \

    make -j4
    make install
    make clean
done

我在 c 方面不是很有经验 - 我认为这不是一项艰巨的任务,但我根本不知道谷歌要做什么。如果您能让我知道需要什么标志/配置或命令make来实现,library 1.a那将非常有帮助。

我确实找到了-L标志但是指定文件夹没有帮助,它仍然说

configure: error: Package requirements (opus >= 1.1) were not met:

No package 'opus' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables DEPS_CFLAGS
and DEPS_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

我试过的是添加export DEPS_LIBS=$HOME/Downloads/libopusenc/libopus.a,但它仍然是一样的。它是否还需要 DEPS_CFLAGS 中的某些内容?如果是的话,如果需要的话,我可以在那里输入什么以使其“不为空”?

我是否需要以某种方式直接指定库的名称和它正在搜索的名称?

标签: makefilestatic-librariesconfigureautotools

解决方案


只需做export DEPS_CFLAGS=' '就足以让脚本跳过该步骤。我现在确实遇到了其他问题,但如果我无法从这里弄清楚,我会提出一个新问题


推荐阅读