【问题标题】:make: specify package dependency locationmake:指定包依赖位置
【发布时间】:2020-06-10 18:33:25
【问题描述】:

tldr:我如何告诉make 使用library.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 中的某些内容?如果是,如果需要的话,我可以在那里输入什么使其“不为空”?

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

【问题讨论】:

  • 您检查过configure --help 选项吗?
  • @Rorschach 感谢您的回复。我现在确实基于 --libdir=$REPOROOT 尝试了更多的东西,但我不确定我是否正确使用它们。此外,我发现configure.ac 表示PKG_CHECK_MODULES([DEPS], [opus >= 1.1])。我认为这是它失败的一步,不是因为make,而是因为./configure。如果我尝试将其注释掉,它将在下一次 ./configure 调用时自动添加回来。这是有问题的图书馆:github.com/xiph/libopusenc
  • configure 脚本用于生成带有特定于您的环境的变量的 makefile,并且对于不同的项目是唯一的 - 因此很难准确猜测需要更改哪些变量(也许是真正的 autotools eficionado) - 链接静态库我认为你不需要调整 CFLAGS,但我不确定

标签: makefile static-libraries configure autotools


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 2011-06-11
    • 2017-03-20
    • 2015-05-09
    • 2011-05-23
    • 1970-01-01
    相关资源
    最近更新 更多