尝试将大型gcc / makefile项目转换为clang。大致可以在x86上使用,但是现在我正在尝试使交叉编译正常工作。
当前的工作方式是,我们将Linaro的7.1.1 arm编译器与其配套的sysroot目录一起使用,用于基础库/头。我安装了clang-6.0,然后安装了基本clang(不确定是否重要)。 当我执行'clang -v'并得到
时,我使用了一些命令,将clang重定向到clang-6.0。Block-2
找不到我们使用的当前编译器,位于
clang version 6.0.0-1ubuntu2~16.04.1 (tags/RELEASE_600/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
....
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/9
....
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6.5.0
....
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.4.0
Candidate multilib: .;@m64
Selected multilib: .;@m64
我仅找到设置--sysroot的引用,但没有找到特定的编译器。关于clang + llvm +其他编译器之间的关系,绝对仍然迷失了。我什至看到某个地方说我需要先编译llvm才能使用它?
我非常粗略地修改了make文件,以获取以下输出,基本上我只需要添加“ -target arm-linux-gnueabuhf”并重新排序了mcpu / mfloat / marm / march,因此它们排在-target之后以防万一
/usr/local/gcc-linaro-7.1.1-2017.08-i686_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++(also a directory for *x86_64*)
我认为问题可能出在我所做的更改上,该更改是替换为
的实际“铛”调用clang --sysroot=/usr/local/sysroot-glibc-linaro-2.25-2017.08-arm-linux-gnueabihf -c -std=c++0x
-g -DDEBUG_ON -target arm-linux-gnueabihf -mcpu=cortex-a7 -mfloat-abi=hard -marm -march=armv7ve
-Wall -fexceptions -fdiagnostics-show-option -Werror .... -I/usr/local/gcc-linaro-7.1.1-2017.08-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/include .... and many more
最后
/usr/local/gcc-linaro-7.1.1-2017.08-i686_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ ....
如前所述,我已经可以与gcc进行交叉编译,因此我已经遇到了需要“ build-essentials”,“ g ++-multilibs”等标准库的问题。因此,它们已经安装。 / p>
看起来并且真的没有找到对我有用的东西,我在linux mint 18.3上,我发现最接近的东西是人们在Mac和Windows上遇到的问题。