小虾米资讯
AD1android:本吧主今天刚编译的Windows上的各种交叉工具链。
2021-04-10 02:20:39 / 我要吐槽
交叉工具链分三部分。命名方式体系结构-任意名(比如ubuntu)-操作系统-C库(不是C++库)以上均指目标计算机比如x86_64-ubuntu-linux-gnu就是64位的x86处理器,linux,和GNU C库的工具链。也就是说一个交叉工具链,最重要的一部分显然就是C库了。我们要经过5部曲来构建交叉工具链。1.binutils-gdb2.gcc的gcc部分3.libc的CRT准备头文件.crt0什么的4. libgcc5.libc全部编译6.libstdc++ (C++标准库)7.别的无关紧要的东西,例如sanitizers.前面6步是必须做的。
交叉工具链。build. host. target. 只要有一个不一样就算交叉编译。
工具链都放在这了。自己去看吧。下载完设置环境变量就完事了。https://gitee.com/qabeowjbtkwb/projects
这么多交叉工具链。各位开心就好
全部都是直接可以windows上用的。不是WSL cygwin等谢谢
1.自然就是64位x86 linux的工具链了。x86_64-linux-gnu之所以linux经常被叫GNU/Linux就是因为GNU提供了C库. 然而这个工具链的glibc版本是2.34的,而现在的ubuntu-20.04LTS用的仍是两年前的glibc 2.31,导致ABIi不兼容。 所以我专门构建了一个2.31版本的glibc的交叉工具链.x86_64-cqwrteur-linux-gnu2.31不要试图替换ubuntu本身的glibc为新版本的,原因是这些linux发行版,往往魔改glibc,导致abi不兼容。换掉你计算机就别想启动了。 砖机了。
2. 第二个比较重要的工具链就是x86精灵工具链。x86_64-elf和i686-elf这个工具链重要的原因是它是用来写操作系统的。我这个精灵工具链是32位和64位在一起的。x86_64-elf和i686-elf。其中x86_64-elf提供了关红区的多库版本。-mno-red-zone可以关掉红区,否则会在操作系统内核中断导致操作系统内核崩溃。
3.非glibc的linux工具链分别为x86_64-linux-muslx86_64-linux-uclibcx86_64-linux-android (虽然叫android,但实际上官方叫bionic) 这些都是非GNU C库的libc.这些工具链使用了就不再链接glibc了。实际上也就不是GNU/Linux了,只是Linux内核而已如果只是为了静态编译的话,自然musl是最好的。各自的动态链接也搞出来了,想动态链接musl或是uclibc或是bionic都是可以的。
4.安卓工具链x86_64-linux-android和arm-linux-androideabi (这个工具链默认是关闭异常处理和RTTI的,需要手工-fexceptions启动异常处理)aarch64-linux-android我尝试了,但编译失败。libgcc缺crt,估计是GCC bug。放着先。
5.非linux目标的x86工具链x86_64-freebsd13 这个自然是编译程序到FreeBSD13上。i586-pc-msdosdjgpp什么?MSDOS? 你没看错,就是编译DOS程序的。编译了就可以在dos上用了。
6.非x86体系结构的linux工具链。楼主也没搞多,就搞了三个分别是aarch64-linux-gnu 这个是用在64位树莓派上的riscv64-linux-gnu 一个个loser不是喜欢吹riscv么?怎么没见哪个loser用的?我提供了谢谢powerpc64-linux-gnu 自然就是用在IBM机器上的
这些工具链都包含了fast_io库。对没有操作系统也可以fast_io.就是这么强大
笑摸帝球狗头@幻の上帝
- 上一篇: 萌新求解有没有什么网站可以看到每只宝可梦的详细资料啊
- 下一篇:萌将吧,帖子、不删
Powered By © 小虾米资讯 2015
(本站部分文章来源于网络或网友爆料,不代表本站观点,如有侵权请联系及时删除 )