今日CentOS8搭建arm交叉编译环境,配置好环境变量后,输入arm-none-linux-gnueabi- ,按2下TAB键,可看到如下:
[binary@daemon ~]$ arm-none-linux-gnueabi-
arm-none-linux-gnueabi-addr2line arm-none-linux-gnueabi-c++filt arm-none-linux-gnueabi-gcc-4.4.1 arm-none-linux-gnueabi-gprof arm-none-linux-gnueabi-objdump arm-none-linux-gnueabi-sprite
arm-none-linux-gnueabi-ar arm-none-linux-gnueabi-cpp arm-none-linux-gnueabi-gcov arm-none-linux-gnueabi-ld arm-none-linux-gnueabi-ranlib arm-none-linux-gnueabi-strings
arm-none-linux-gnueabi-as arm-none-linux-gnueabi-g++ arm-none-linux-gnueabi-gdb arm-none-linux-gnueabi-nm arm-none-linux-gnueabi-readelf arm-none-linux-gnueabi-strip
arm-none-linux-gnueabi-c++ arm-none-linux-gnueabi-gcc arm-none-linux-gnueabi-gdbtui arm-none-linux-gnueabi-objcopy arm-none-linux-gnueabi-size
但执行出现错误(错误信息为:No such file or directory):
[binary@daemon ~]$ arm-none-linux-gnueabi-gcc
bash: /data/vProgram/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc: No such file or directory
有点奇怪,分明是有此文件,环境变量也是正确生效的,为何会提醒此错误?想想可这arm交叉编译器是32位的?
当前系统环境是64位,并没有32位的依赖库?
用ldd查看:
[binary@daemon bin]$ ldd arm-none-linux-gnueabi-gcc
not a dynamic executable
再用readelf查看:
[binary@daemon bin]$ readelf -l arm-none-linux-gnueabi-gcc
Elf file type is EXEC (Executable file)
Entry point 0x80493e0
There are 8 program headers, starting at offset 52
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
PHDR 0x000034 0x08048034 0x08048034 0x00100 0x00100 R E 0x4
INTERP 0x000134 0x08048134 0x08048134 0x00013 0x00013 R 0x1
[Requesting program interpreter: /lib/ld-linux.so.2]
LOAD 0x000000 0x08048000 0x08048000 0x31af8 0x31af8 R E 0x1000
LOAD 0x031af8 0x0807aaf8 0x0807aaf8 0x0085c 0x01160 RW 0x1000
DYNAMIC 0x031b0c 0x0807ab0c 0x0807ab0c 0x000c8 0x000c8 RW 0x4
NOTE 0x000148 0x08048148 0x08048148 0x00020 0x00020 R 0x4
GNU_EH_FRAME 0x031a80 0x08079a80 0x08079a80 0x0001c 0x0001c R 0x4
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RWE 0x4
Section to Segment mapping:
Segment Sections...
00
01 .interp
02 .interp .note.ABI-tag .hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame
03 .ctors .dtors .jcr .dynamic .got .got.plt .data .bss
04 .dynamic
05 .note.ABI-tag
06 .eh_frame_hdr
07
提示错误,定位到问题,缺乏32位的支持:
[Requesting program interpreter: /lib/ld-linux.so.2]
在root账户权限下,安装ld-linux.so.2:
[root@daemon bin]# yum install ld-linux.so.2
Last metadata expiration check: 0:00:41 ago on Thu 19 Dec 2019 10:06:30 AM CST.
Dependencies resolved.
===================================================================================================================================================================================================================
Package Arch Version Repository Size
===================================================================================================================================================================================================================
Installing:
glibc32 x86_64 2.28-42.1.el8 AppStream 1.5 M
Transaction Summary
===================================================================================================================================================================================================================
Install 1 Package
Total download size: 1.5 M
Installed size: 5.2 M
Is this ok [y/N]: y
Downloading Packages:
glibc32-2.28-42.1.el8.x86_64.rpm 725 kB/s | 1.5 MB 00:02
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 388 kB/s | 1.5 MB 00:03
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : glibc32-2.28-42.1.el8.x86_64 1/1
Running scriptlet: glibc32-2.28-42.1.el8.x86_64 1/1
Verifying : glibc32-2.28-42.1.el8.x86_64 1/1
Installed:
glibc32-2.28-42.1.el8.x86_64
Complete!
执行arm-none-linux-gnueabi-gcc,这时已经正常了:
[binary@daemon bin]$ arm-none-linux-gnueabi-gcc
arm-none-linux-gnueabi-gcc: no input files
查看版本:
[binary@daemon bin]$ arm-none-linux-gnueabi-gcc --version
arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2009q3-67) 4.4.1
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
问题得到解决~
有兴趣的朋友可以持续关注,接下来将推送嵌入式系列文章。
注:本文为binary原创,未经许可不得在任何平台转载。如需转载,与作者联系~
欢迎加入linux交流群:734638086,分享工作经验。
关注微信公众号:技术训练营(微信ID:TechBootcamp),获取更多资讯~
微信扫一扫,发现更精彩。