【问题标题】:Configure generates additional directories on x86_64 with clangConfigure 在 x86_64 上使用 clang 生成其他目录
【发布时间】:2015-03-21 01:53:27
【问题描述】:

我正在尝试使用以下命令在 Mac OS X Yosemite(使用 clang)上从源代码构建 libjit

./auto_gen.sh ./configure --prefix=/path/to/my/own/directory make make install

之后我发现链接器使用clang test.c -o test -ljit 命令报告了 library-not-found 错误。我检查了安装库的目录,发现它安装到/usr/local/lib/x86_64/libjit*而不是/usr/local/lib/libjit*,导致链接错误。

我还在我的 Archlinux 机器上构建了库,一切都很好。比较在不同操作系统上生成的两个 makefile,我发现 libdir 变量不同。

我在 Debian 上搜索并访问了有关 multiarch 的页面,但我不确定这个问题是否与该机制有关。

那么如何像其他库一样将安装目录更改为/usr/local/lib?或者,如果这是正确的方法,我怎样才能使链接器正常工作?

【问题讨论】:

  • 在这种情况下,您必须深入挖掘 - 查看 libjit configure.ac 脚本,看看它是否在做一些奇怪的事情。没有像这个 AFAIK 这样的内置功能。这种骇人听闻的事情发生得比人们想象的要多:-(。阅读--help 输出也可能会提供信息。如果脚本确实在做一些奇怪的事情,您将不得不对其进行编辑。
  • @TomTromey 非常感谢。我已经找到原因了。有时 automake 确实不容易使用,尤其是在出现不同行为的情况下:(

标签: makefile clang configure automake


【解决方案1】:

在配置脚本上花了一些时间后,我发现了这段代码: 448 if test x$GCC = xyes ; then 449 multi_os_directory=`$CC -print-multi-os-directory` 450 case $multi_os_directory in 451 .) ;; # Avoid trailing /. 452 *) libdir=$libdir/$multi_os_directory;; 453 esac 454 fi 这肯定是这个问题的原因。 clang -print-multi-os-directory 打印 x86_64gcc 打印 '.'使用相同的选项。

【讨论】:

    猜你喜欢
    • 2013-12-25
    • 1970-01-01
    • 2021-08-25
    • 2023-03-25
    • 2012-02-15
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多