如何交叉编译出arm-linux程序

lingstudio 2009-07-10 11:03:19
我在我的linux上写了一个程序,只有一个文件main.cpp.能够正常运行,我想将这个程序移植到arm-linux上.编译环境别人已经建好了,但是只有一个压缩包发给我.解压后我的目录如下.根目录是/home/arm-uclibc-3.4.6,arm-uclibc-3.4.6下有目录:bin,include,lib,libexec等.bin下有arm-linux-g++等编译工具.include下是头文件,lib下是库文件.请问我该怎样设置环境,makefile怎么写,才能编译出能在arm-linux上运行的程序.
...全文
385 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yhf365 2009-07-14
  • 打赏
  • 举报
回复
还有这种事?
再copy一个armtest过来看看。

是挂载PC的nfs吗?
paolzhi 2009-07-14
  • 打赏
  • 举报
回复
4楼同志,写的很好
lingstudio 2009-07-13
  • 打赏
  • 举报
回复
问题解决了,我犯了个低级错误,我把压缩包在windows下解压了,再复制文件夹到linux的,里面有很多文件是链接.所以出错.现在可以编译了.
但是出现了新的问题,我编译后的程序比本机小了10多倍,也不能在本机运行,这是正常的.我把它移到有arm-linux盒子里去后,执行程序出现
错误,刚开始是-bash: ./armtest: Permission denied,我用如下命令后chmod 777 armtest出现另一个错误,
-bash: ./armtest: No such file or directory.这是怎么回事?
rzsheng 2009-07-13
  • 打赏
  • 举报
回复
4楼写的不错,
是什么错误,帖出来看看,
hefuhua 2009-07-10
  • 打赏
  • 举报
回复
楼主要把错误贴给大家看,方便看问题
lingstudio 2009-07-10
  • 打赏
  • 举报
回复
环境变量我都已经设置好了,报出一堆的错误.
我现在重新编译那个开发包试试.
ShowMan 2009-07-10
  • 打赏
  • 举报
回复
一、交叉编译环境arm-linux-gcc-2.95.3 的建立


1.下载cross-2.95.3.tar.bz2
2.建目录,复制,解压
# cd /usr/local
# mkdir arm
# cd arm
复制cross-2.95.3.tar.bz2 到当前目录
# tar jxvf cross-2.95.3.tar.bz2
3.导出/usr/local/arm/2.95.3/bin 到环境变量
在/etc/profile 最后添加 PATH=$PATH:/usr/local/arm/2.95.3/bin

二、交叉编译环境arm-linux-gcc-3.4.1的建立


1.下载arm-linux-gcc-3.4.1.tar.bz2
ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2
2.复制,解压
# cd /
复制arm-linux-gcc-3.4.1.tar.bz2到当根目录
# tar jxvfarm-linux-gcc-3.4.1.tar.bz2
3.导出/usr/local/arm/3.4.1/bin 到环境变量
在/etc/profile 最后添加 PATH=$PATH:/usr/local/arm/3.4.1/bin


三、导出使环境变量(具体这一步都没有写,也可以)


1.用export PATH=$PATH:/usr/local/arm/2.95.3/bin/: (临时起作用)
2.在你的家目录里,修改自己的环境变量:vi ~/.bash_profile 把这个文件添加到 .bash_profile中就行了 ;(对某用户起作用)
3.修改/etc/porfile文件,在最后加上export PATH=$PATH:/usr/local/arm/2.95.3/bin/: (对所有用户起作用);
文件修改后,要使更改环境变量生效一般的做法是重新登录,
运行# source /etc/profile 可以使导出的环境变量马上生效,避免重启。『在执行这之后,在echo $PATH中又多出了一条我们在/etc/profile中添加的路径:/usr/local/arm/2.95.3/bin/。但重启后又没有了』
ShowMan 2009-07-10
  • 打赏
  • 举报
回复
你用你原来的Makfefile,直接make不行吗?

arm-linux-g++ -lpthread -I ${ARMInc} -g test.cpp -o test
ShowMan 2009-07-10
  • 打赏
  • 举报
回复
PATH=/home/arm-uclibc-3.4.6/bin:$PATH
arm-linux-gcc -g test.c -o test
lingstudio 2009-07-10
  • 打赏
  • 举报
回复
我原来的makefile里这样写的:cc=arm-linux-g++ -lpthread -I ${ARMInc}
ARMInc是环境变量,那个include路径.PATH环境变量也已添加.

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧