加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

c – 来自Windows的交叉编译GNU ARM(BeagleBoneBlack). * .elf

发布时间:2021-01-11 18:11:14 所属栏目:Linux 来源:网络整理
导读:副标题#e# 我正处于在BeagleBone Black上开发无人机飞行控制器的(非常)早期阶段.我要提到的是,对于BBB,Linux和嵌入式系统,我是一个新手.我的学术重点一直是控制理论 这是我在Matlab仿真之外的第一次实际实现.我目前的系统如下: 宿主 运行Eclipse Luna的Win

root@arm:/home/ubuntu/RDKTestProgs# strace ./Test6
strace: Can't stat './Test6': No such file or directory
root@arm:/home/ubuntu/RDKTestProgs# strace ./Test6.elf
execve("./Test6.elf",["./Test6.elf"],[/* 22 vars */]) = -1 ENOENT (No such file or directory)
write(2,"strace: exec: No such file or di"...,40strace: exec: No such file or directory
) = 40
exit_group(1)                           = ?
+++ exited with 1 +++

字符串:

root@arm:/home/ubuntu/RDKTestProgs# strings Test6.elf
/lib/ld-linux.so.3
libc.so.6
abort
__libc_start_main
__aeabi_atexit
libstdc++.so.6
__gmon_start__
_Jv_RegisterClasses
_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
_ITM_deregisterTMCloneTable
_ITM_registerTMCloneTable
_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
_ZNSt8ios_base4InitD1Ev
_ZNSolsEPFRSoS_E
_ZNSt8ios_base4InitC1Ev
_ZSt4cout
libm.so.6
libgcc_s.so.1
__aeabi_unwind_cpp_pr0
__aeabi_unwind_cpp_pr1
GLIBCXX_3.4
GCC_3.5
GLIBC_2.4
?8FAFJF
x`9`{h
Hello ARM World!

我通过我的BeagelBoneBlack搜索了“readelf”函数指示的4个共享库文件,发现它们实际存在.但问题是,其中一些文件位于usr / lib / arm-linux-gnueabihf /目录中,而其他文件位于/ lib / arm-linux-gnueabihf#目录中.为了解决这个问题,我创建了指向/usr/lib / arm-linux-gnueabihf /目录中找不到的文件的符号链接.这仍然没有解决问题.所以我创建了符号链接到/ lib / arm-linux-gnueabihf /目录中找不到的文件.再一次,没有运气.

有没有办法检查执行时使用的目录? Test6.elf文件中可能还缺少什么?我此刻不知所措.任何建议或指导将不胜感激!干杯!

附:我还设法检查GLIBCXX_3.4,GLIBC_2.4和GCC_3.5,如下所示,但同样,其中一些属于/usr/lib / arm-linux-gnueabihf中的文件,其他的可以在/ lib /中找到在arm-linux的-gnueabihf.再次感谢!

root@arm:/lib/arm-linux-gnueabihf# strings libgcc_s.so.1 | grep GCC
GCC_3.0
GCC_3.3
GCC_3.3.1
GCC_3.3.4
GCC_3.4
GCC_3.4.2
GCC_4.0.0
GCC_4.2.0
GCC_4.3.0
GCC_4.7.0
GCC_3.5

root@arm:/usr/lib/arm-linux-gnueabihf# strings libstdc++.so.6.0.18 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBC_2.4
GLIBC_2.17
GLIBCXX_DEBUG_MESSAGE_LENGTH

最后,这是“Hello ARM World”计划

//============================================================================
// Name        : main.cpp
// Author      : RDK
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++
//============================================================================

#include 
最佳答案 对吧!所以我已经开始工作了.这是我的步骤,希望它们是合理的,不会在将来引起我的问??题.

>从this post开始,我试图找出Test6.elf期望找到动态链接库的linux加载器的位置.这产生了:

root @ arm:/ home / ubuntu / RDKTestProgs#readelf -l ./Test6.elf | grep ld-linux
??????[请求程序解释器:/lib/ld-linux.so.3]
>我检查了我的/ lib文件夹,确定ld-linux.so.3文件丢失了.相反,我在/ lib / arm-linux-gnueabihf /文件夹中找到了它
>所以我通过以下方式在/ lib文件夹中创建了一个符号链接:

ln -s /lib/arm-linux-gnueabihf/ld-linux.so.3 /lib/ld-linux.so.3

繁荣!有用.然而,我仍然觉得奇怪的是ldd ./Test6.elf仍然返回:

 root@arm:/home/ubuntu/RDKTestProgs# ldd ./Test6.elf
 not a dynamic executable

有没有充分的理由,或者这是否正常? – 这对我来说似乎不对.

我还注意到我将Float ABI的当前编译器设置(以及工具链)设置为soft,但我的BeagleBoneBlack正在运行arm-linux-gnueabihf – hard float.这会不会给我带来问题?我应该寻找不同的工具链吗?

干杯!

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读