叮当与无臂交叉编译
Clang cross-compilation with arm-none-eabi
我想对以下源文件进行交叉编译(Foo.cpp)
#include <cstdint>
int Foo()
{
uint32_t bar = 0;
return bar;
}
在Windows 10系统上使用i686-W64-mingw32和arm-none-eabi。因此我使用以下批处理文件
@echo off
set "PATH=C:/MinGW/i686-8.1.0-release-win32-dwarf-rt_v6-rev0/bin;%PATH%"
set "PATH=C:/GNU-Tools-ARM-Embedded/7-2018-q2-update/bin;%PATH%"
set "PATH=C:/LLVM/7.0.0/bin;%PATH%"
clang++ ^
-c ^
-std=gnu++14 ^
-v ^
-target i686-w64-mingw32 ^
Foo.cpp ^
-o Foo.obj
@echo on
REM
REM
REM
REM
REM
@echo off
clang++ ^
-c ^
-std=gnu++14 ^
-v ^
-target arm-none-eabi ^
-march=armv6-m ^
-mcpu=cortex-m0 ^
-mthumb ^
-msoft-float ^
-mfloat-abi=soft ^
--sysroot=C:/GNU-Tools-ARM-Embedded/7-2018-q2-update ^
Foo.cpp ^
-o Foo.o
pause
这将产生以下输出
clang version 7.0.0 (tags/RELEASE_700/final)
Target: i686-w64-windows-gnu
Thread model: posix
InstalledDir: C:LLVM7.0.0bin
"C:\LLVM\7.0.0\bin\clang++.exe" -cc1 -triple i686-w64-windows-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name Foo.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -target-cpu pentium4 -dwarf-column-info -debugger-tuning=gdb -v -coverage-notes-file "c:\Users\Zlatan\MKS\Test\Foo.gcno" -resource-dir "C:\LLVM\7.0.0\lib\clang\7.0.0" -internal-isystem "C:\MinGW\i686-8.1.0-release-win32-dwarf-rt_v6-rev0\i686-w64-mingw32\include\c++" -internal-isystem "C:\MinGW\i686-8.1.0-release-win32-dwarf-rt_v6-rev0\i686-w64-mingw32\include\c++\i686-w64-mingw32" -internal-isystem "C:\MinGW\i686-8.1.0-release-win32-dwarf-rt_v6-rev0\i686-w64-mingw32\include\c++\backward" -internal-isystem "C:\MinGW\i686-8.1.0-release-win32-dwarf-rt_v6-rev0\i686-w64-mingw32\include\c++\8.1.0" -internal-isystem "C:\MinGW\i686-8.1.0-release-win32-dwarf-rt_v6-rev0\i686-w64-mingw32\include\c++\8.1.0\i686-w64-mingw32" -internal-isystem "C:\MinGW\i686-8.1.0-release-win32-dwarf-rt_v6-rev0\i686-w64-mingw32\include\c++\8.1.0\backward" -internal-isystem "C:\MinGW\i686-8.1.0-release-win32-dwarf-rt_v6-rev0\include\c++\8.1.0" -internal-isystem "C:\MinGW\i686-8.1.0-release-win32-dwarf-rt_v6-rev0\include\c++\8.1.0\i686-w64-mingw32" -internal-isystem "C:\MinGW\i686-8.1.0-release-win32-dwarf-rt_v6-rev0\include\c++\8.1.0\backward" -internal-isystem "C:\MinGW\i686-8.1.0-release-win32-dwarf-rt_v6-rev0\lib\gcc\i686-w64-mingw32\8.1.0\include\c++" -internal-isystem "C:\MinGW\i686-8.1.0-release-win32-dwarf-rt_v6-rev0\lib\gcc\i686-w64-mingw32\8.1.0\include\c++\i686-w64-mingw32" -internal-isystem "C:\MinGW\i686-8.1.0-release-win32-dwarf-rt_v6-rev0\lib\gcc\i686-w64-mingw32\8.1.0\include\c++\backward" -internal-isystem "C:\LLVM\7.0.0\lib\clang\7.0.0\include" -internal-isystem "C:\MinGW\i686-8.1.0-release-win32-dwarf-rt_v6-rev0\i686-w64-mingw32/sys-root/mingw/include" -internal-isystem "C:\MinGW\i686-8.1.0-release-win32-dwarf-rt_v6-rev0\i686-w64-mingw32\include" -internal-isystem "C:\MinGW\i686-8.1.0-release-win32-dwarf-rt_v6-rev0\include" -std=gnu++14 -fdeprecated-macro -fdebug-compilation-dir "c:\Users\Zlatan\MKS\Test" -ferror-limit 19 -fmessage-length 227 -fno-use-cxa-atexit -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdwarf-exceptions -fdiagnostics-show-option -fcolor-diagnostics -o Foo.obj -x c++ Foo.cpp
clang -cc1 version 7.0.0 based upon LLVM 7.0.0 default target x86_64-pc-win32
ignoring nonexistent directory "C:MinGWi686-8.1.0-release-win32-dwarf-rt_v6-rev0i686-w64-mingw32includec++"
ignoring nonexistent directory "C:MinGWi686-8.1.0-release-win32-dwarf-rt_v6-rev0i686-w64-mingw32includec++i686-w64-mingw32"
ignoring nonexistent directory "C:MinGWi686-8.1.0-release-win32-dwarf-rt_v6-rev0i686-w64-mingw32includec++backward"
ignoring nonexistent directory "C:MinGWi686-8.1.0-release-win32-dwarf-rt_v6-rev0i686-w64-mingw32includec++8.1.0"
ignoring nonexistent directory "C:MinGWi686-8.1.0-release-win32-dwarf-rt_v6-rev0i686-w64-mingw32includec++8.1.0i686-w64-mingw32"
ignoring nonexistent directory "C:MinGWi686-8.1.0-release-win32-dwarf-rt_v6-rev0i686-w64-mingw32includec++8.1.0backward"
ignoring nonexistent directory "C:MinGWi686-8.1.0-release-win32-dwarf-rt_v6-rev0includec++8.1.0"
ignoring nonexistent directory "C:MinGWi686-8.1.0-release-win32-dwarf-rt_v6-rev0includec++8.1.0i686-w64-mingw32"
ignoring nonexistent directory "C:MinGWi686-8.1.0-release-win32-dwarf-rt_v6-rev0includec++8.1.0backward"
ignoring nonexistent directory "C:MinGWi686-8.1.0-release-win32-dwarf-rt_v6-rev0i686-w64-mingw32/sys-root/mingw/include"
#include "..." search starts here:
#include <...> search starts here:
C:MinGWi686-8.1.0-release-win32-dwarf-rt_v6-rev0libgcci686-w64-mingw328.1.0includec++
C:MinGWi686-8.1.0-release-win32-dwarf-rt_v6-rev0libgcci686-w64-mingw328.1.0includec++i686-w64-mingw32
C:MinGWi686-8.1.0-release-win32-dwarf-rt_v6-rev0libgcci686-w64-mingw328.1.0includec++backward
C:LLVM7.0.0libclang7.0.0include
C:MinGWi686-8.1.0-release-win32-dwarf-rt_v6-rev0i686-w64-mingw32include
C:MinGWi686-8.1.0-release-win32-dwarf-rt_v6-rev0include
End of search list.
c:UsersZlatanMKSTest>REM
c:UsersZlatanMKSTest>REM
c:UsersZlatanMKSTest>REM
c:UsersZlatanMKSTest>REM
c:UsersZlatanMKSTest>REM
clang version 7.0.0 (tags/RELEASE_700/final)
Target: arm-none--eabi
Thread model: posix
InstalledDir: C:LLVM7.0.0bin
"C:\LLVM\7.0.0\bin\clang++.exe" -cc1 -triple thumbv6m-none--eabi -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name Foo.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -mconstructor-aliases -nostdsysteminc -target-cpu cortex-m0 -target-feature +soft-float -target-feature +soft-float-abi -target-feature -crc -target-feature -dsp -target-feature -ras -target-feature -dotprod -target-feature -hwdiv-arm -target-feature -hwdiv -target-feature -fp-only-sp -target-feature -d16 -target-feature -vfp2 -target-feature -vfp3 -target-feature -fp16 -target-feature -vfp4 -target-feature -fp-armv8 -target-feature -neon -target-feature -crypto -target-feature +strict-align -target-abi aapcs -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -dwarf-column-info -debugger-tuning=gdb -v -coverage-notes-file "c:\Users\Zlatan\MKS\Test\Foo.gcno" -resource-dir "C:\LLVM\7.0.0\lib\clang\7.0.0" -isysroot C:/GNU-Tools-ARM-Embedded/7-2018-q2-update -internal-isystem "C:/GNU-Tools-ARM-Embedded/7-2018-q2-update\include\c++\v1" -internal-isystem "C:\LLVM\7.0.0\lib\clang\7.0.0\include" -internal-isystem "C:/GNU-Tools-ARM-Embedded/7-2018-q2-update\include" -std=gnu++14 -fdeprecated-macro -fdebug-compilation-dir "c:\Users\Zlatan\MKS\Test" -ferror-limit 19 -fmessage-length 227 -fno-signed-char -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o Foo.o -x c++ Foo.cpp -faddrsig
clang -cc1 version 7.0.0 based upon LLVM 7.0.0 default target x86_64-pc-win32
ignoring nonexistent directory "C:/GNU-Tools-ARM-Embedded/7-2018-q2-updateincludec++v1"
ignoring nonexistent directory "C:/GNU-Tools-ARM-Embedded/7-2018-q2-updateinclude"
ignoring duplicate directory "C:LLVM7.0.0libclang7.0.0include"
#include "..." search starts here:
#include <...> search starts here:
C:LLVM7.0.0libclang7.0.0include
End of search list.
Foo.cpp:1:10: fatal error: 'cstdint' file not found
#include <cstdint>
^~~~~~~~~
1 error generated.
因此,对于 i686-w64-mingw32,将编译器的位置放在路径上就足够了,但对于 arm-none-eabi,clang 编译器找不到交叉编译标头。
有人知道如何为无臂配置叮当吗?
为什么会出现以下情况?
目标:无臂--埃比
不应该吗?
目标:无臂
无臂
谢谢!
兹拉坦
我参加派对有点晚了,但无论如何这是我的两分钱:
--sysroot
选项应为:
--sysroot=C:/GNU-Tools-ARM-Embedded/7-2018-q2-update/arm-none-eabi
您缺少最后的/arm-none-eabi
部分。Clang 查找工具链arm-none-eabi
子目录中的目录 bin
、 lib
和 include
(请参阅此处的文档)。
这应该可以修复"忽略不存在的目录"错误和由于缺少标准库而导致的致命错误。
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 用于交叉编译和CMake的预处理器宏的单元测试
- 在Linux上使用Clang / OLLVM交叉编译helloworld Windows可执行文件时的问题
- 无法使用 aarch64-unknown-nto-qnx7.0.0-g++-5.4.0 编译器交叉编译 QNX 平台的
- 如何使用导出的函数交叉编译 DLL
- 交叉编译:特殊的交叉编译器还是只是带有选项 -march 的 gcc?
- 交叉编译时包括外部库
- 如何交叉编译C++文件
- SFML 交叉编译 for Windows on Linux.
- 使用 cmake 交叉编译 libwebsockets
- 使用cmake交叉编译gRPC
- 为什么Qt必须从源代码构建以进行交叉编译?
- 交叉编译树莓派
- Microsoft Visual Studio 2019交叉编译CMake库 - 有效,但存在SEG错误
- Jlibfprint 交叉编译
- 在Linux上交叉编译Windows应用程序时如何链接到Winsock?
- GPS 的交叉编译显示"unrecognized option"
- clang 交叉编译命令找不到头文件
- Visual Studio 2017 ARM 交叉编译链接器崩溃
- 叮当与无臂交叉编译