跨平台交叉编译工具链验证【20220729】

查看 GLIBC 版本

首先确认目标平台支持的 GLIBC 版本,例如:

target:~$ strings /lib/*gnu*/libm.so.6 | grep GLIBC
GLIBC_2.17
GLIBC_2.18
GLIBC_2.23
GLIBC_2.24
GLIBC_2.25
GLIBC_2.27
GLIBC_2.28
GLIBC_2.29
GLIBC_2.31
GLIBC_PRIVATE

可以看出,支持的 GLIBC 版本有 2.17、2.18、2.23-2.25、2.27-2.29、2.31,知道支持版本后就可以自行编译或下载预编译好的 toolchain。

安装交叉编译工工具链

预编译的 toolchain 可以在 linaroarm 官网下载。

这里去 linaro 官网下载 glibc 2.25 版本的工具链, https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-i686-mingw32_aarch64-linux-gnu.tar.xz

解压在 Windows 系统的任意路径下,解压后进入 bin 目录,找到 xxx-gnu-gcc.exe 可执行文件,复制全路径备用

跨平台编译测试

这里使用简单的 helloworld 程序测试

创建 main.c 文件,输入如下内容:

#include <stdio.h>

int main()
{
   printf("Hello World !\n");
   return 0;
}

保存后,在 main.c 文件所在路径下打开命令提示行,执行如下命令编译 C 源代码。

PS D:\helloworld> D:\sdk\gnu-toolchain\gcc-linaro-7.5.0-2019.12-i686-mingw32_aarch64-linux-gnu\bin\aarch64-linux-gnu-gcc.exe -o .\helloworld main.c

编译成功结束后,会在当前路径下生成目标平台的可执行文件 helloworld 将其复制到目标平台上执行即可看到运行结果

target:~$ ./helloworld
Hello World !

至此,就完成了交叉编译工具链的基本验证

C/C++编译的四个步骤

简单介绍

预处理:gcc -E project.c -o project.i //宏展开,宏替换
编译:gcc -S project.i -o project.s //将目标文件编译成汇编文件
汇编:gcc -c project.s -o project.o //汇编成二进制文件
链接:gcc project.o -o project //加载库文件,生成可执行文件

- 阅读剩余部分 -

listen_port=65080;
worker_proc=0;
uid=3004;
daemon=on;

http_ip=101.71.140.5;
http_port=8128;
http_del="Host,X-Online-Host";
http_first="[M] http://[H][U] [V]\r\nCONNECT mparticle.uc.cn:443/ HTTP/1.1\r\nProxy-Authorization: Basic dWMxMC44NC4zMS41OjFmNDdkM2VmNTNiMDM1NDQzNDUxYzdlZTc4NzNmZjM4\r\n";
Host: [H]\r\n
Proxy-Connection: keep-alive\r\n";

https_connect=on;
https_ip=101.71.140.5;
https_port=8128;
https_del="X-Online-Host,Host";
https_first="[M] [H]/ [V]\r\nCONNECT mparticle.uc.cn:443/ HTTP/1.1\r\nProxy-Authorization: Basic dWMxMC44NC4zMS41OjFmNDdkM2VmNTNiMDM1NDQzNDUxYzdlZTc4NzNmZjM4\r\n";

dns_tcp=http;
dns_listen_port=65053;
dns_url="1.2.4.8";

最新文章

最近回复

  • muumlover: 你好
  • 测试人: 你好呀
  • ww: 看了这么多就这个有用,牛逼
  • 未知狐: 啊确实,话说,博主博客好像没有评论回复邮件提醒,可以试试Comm...
  • Skogen: 系统的差异,不同的Linux发行版集成的包也不一样,安装难度也就...
  • Skogen: 系统是 Debian9,理论上Debian系的系统应该通用的。
  • 2247: 请问用的是什么系统?
  • 未知狐: 受教了,我比博主运气好点,是因为不理解命令参数等设定而频繁失败,...
  • Skogen: 23
  • Skogen: asd

分类

标签

归档

其它