gpt4 book ai didi

llvm - Clang++ --gcc-toolchain 和 gcc 4.9.3 链接问题

转载 作者:行者123 更新时间:2023-12-03 09:34:29 25 4
gpt4 key购买 nike

(Ubuntu 16.04.1)

默认情况下,16.04.1 clang 为 5.4 选择 gcc 工具链。不幸的是,我有一个图书馆 需要 5.0 之前的 ABI 我无权访问源代码,实现者也没有发布新版本。我一直在尝试使用 --gcc-toolchain 选项,但我无法让它工作。 (ctrbegin.o 和 crtend.o 在链接上没有得到正确的前缀。)

$ clang++-3.8 -v -print-search-dirs

clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/5.4.0
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/6.0.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9.3
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.0.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6.0.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9.3
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.0.0
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0
Candidate multilib: .;@m64
Selected multilib: .;@m64
programs: =/usr/bin:/usr/lib/llvm-3.8/bin:/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../x86_64-linux-gnu/bin

libraries: =/usr/lib/llvm-3.8/bin/../lib/clang/3.8.0:
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0:
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu:
/lib/x86_64-linux-gnu:
/lib/../lib64:
/usr/lib/x86_64-linux-gnu:
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../..:
/usr/lib/llvm-3.8/bin/../lib:
/lib:
/usr/lib

当我尝试指定 --gcc-toolchain 时,clang 似乎接受,然后完全忽略该值。 (同样的事情发生在 16.04.1 上的 clang++-3.5。)

这是正确的语法吗? 请注意,输出中缺少库目录。
$ clang++-3.8 -v --gcc-toolchain=/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9.3 -print-search-dirs

clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
programs: =/usr/bin:/usr/lib/llvm-3.8/bin:/..//bin

libraries: =/usr/lib/llvm-3.8/bin/../lib/clang/3.8.0:/lib/x86_64-linux-gnu:/lib/../lib64:/usr/lib/x86_64-linux-gnu:/usr/lib/llvm-3.8/bin/../lib:/lib:/usr/lib

我已经尝试了上述主题的许多变体。 (4.9,删除相对路径等)我试过 -isystem 选项和 -cxx-isystem 选项。 (两者都建议作为类似问题的解决方案。)

我错过了什么? (我希望它很简单,并且可以按顺序进行!)

最佳答案

看来您将错误的路径传递给 --gcc-toolchain选项。它需要一个 GCC 安装前缀的路径,即 /usr如果 GCC 安装了包管理器。但是,如果您的系统中安装了多个版本的 GCC 并且它们都具有相同的前缀,我认为不可能选择要使用的工具链。似乎clang只是采用了$PREFIX/lib/gcc/x86_64-linux-gnu中的最新版本目录。所以,我建议你自己构建你需要的工具链并将安装前缀传递给 --gcc-toolchain选项。

关于llvm - Clang++ --gcc-toolchain 和 gcc 4.9.3 链接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39218360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com