Ern*_*ieE 5 llvm clang++ gcc4.9
(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
Run Code Online (Sandbox Code Playgroud)
当我尝试指定--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
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以上主题的多种变体。(4.9,删除相对路径,等等。)我尝试了-isystem选项和-cxx-isystem选项。(两者都建议作为解决类似问题的方法。)
我想念什么? (我希望这很简单,需要打一下头!)
看来您正在通过错误的--gcc-toolchain选择路径。它需要 GCC 安装前缀的路径,这是/usr使用包管理器安装 GCC 的情况。但是,如果您的系统中安装了多个版本的 GCC 并且它们都具有相同的前缀,我认为无法选择使用哪个工具链。似乎 clang 仅采用$PREFIX/lib/gcc/x86_64-linux-gnu目录中的最新版本。因此,我建议您自己构建所需的工具链并将安装前缀传递给--gcc-toolchain选项。
| 归档时间: |
|
| 查看次数: |
3081 次 |
| 最近记录: |