交叉编译出错
我先用本地编译器g++,编译成功,但是用交叉编译时却出错。
一、 本地编译
1、 Makefile文件编写
SYDemo:modulapi.o
g++ -g modulapi.o SYProtocol.a –o SYDemo
modulapi.o:modulapi.cpp SYProtocol.h
g++ -g –c modulapi.cpp –o modulapi.o
clean:
rm –f *.o SYDemo
2、 make编译成功
3、 ./SYDemo设备可以运行
二、 交叉编译
1、Makefile文件编写
SYDemo:modulapi.o
arm-linux-g++ -g modulapi.o SYProtocol.a –o SYDemo
modulapi.o:modulapi.cpp SYProtocol.h
arm-linux-g++ -g –c modulapi.cpp –o modulapi.o
clean:
rm –f *.o SYDemo
出错,结果如下:
2、改用单步编译
(1)编译modulapi.o文件
arm-linux-g++ -g –c modulapi.cpp –o modulapi.o
这一步没有出错
(2)编译SYDemo文件,出错,结果如下:
[root@localhost root]# arm-linux-g++ -g -c modulapi.cpp -o modulapi.o
[root@localhost root]# arm-linux-g++ -g modulapi.o SYProtocol.a -o SYDemo
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: SYProtocol.a(SYProtocol.o): Relocations in generic ELF (EM: 3)
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: SYProtocol.a(SYProtocol.o): Relocations in generic ELF (EM: 3)
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: SYProtocol.a(SYProtocol.o): Relocations in generic ELF (EM: 3)
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: SYProtocol.a(SYProtocol.o): Relocations in generic ELF (EM: 3)
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: SYProtocol.a(SYProtocol.o): Relocations in generic ELF (EM: 3)
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: SYProtocol.a(SYProtocol.o): Relocations in generic ELF (EM: 3)
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: SYProtocol.a(SYProtocol.o): Relocations in generic ELF (EM: 3)
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: SYProtocol.a(SYProtocol.o): Relocations in generic ELF (EM: 3)
SYProtocol.a: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
请教出错原因
一、 本地编译
1、 Makefile文件编写
SYDemo:modulapi.o
g++ -g modulapi.o SYProtocol.a –o SYDemo
modulapi.o:modulapi.cpp SYProtocol.h
g++ -g –c modulapi.cpp –o modulapi.o
clean:
rm –f *.o SYDemo
2、 make编译成功
3、 ./SYDemo设备可以运行
二、 交叉编译
1、Makefile文件编写
SYDemo:modulapi.o
arm-linux-g++ -g modulapi.o SYProtocol.a –o SYDemo
modulapi.o:modulapi.cpp SYProtocol.h
arm-linux-g++ -g –c modulapi.cpp –o modulapi.o
clean:
rm –f *.o SYDemo
出错,结果如下:
2、改用单步编译
(1)编译modulapi.o文件
arm-linux-g++ -g –c modulapi.cpp –o modulapi.o
这一步没有出错
(2)编译SYDemo文件,出错,结果如下:
[root@localhost root]# arm-linux-g++ -g -c modulapi.cpp -o modulapi.o
[root@localhost root]# arm-linux-g++ -g modulapi.o SYProtocol.a -o SYDemo
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: SYProtocol.a(SYProtocol.o): Relocations in generic ELF (EM: 3)
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: SYProtocol.a(SYProtocol.o): Relocations in generic ELF (EM: 3)
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: SYProtocol.a(SYProtocol.o): Relocations in generic ELF (EM: 3)
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: SYProtocol.a(SYProtocol.o): Relocations in generic ELF (EM: 3)
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: SYProtocol.a(SYProtocol.o): Relocations in generic ELF (EM: 3)
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: SYProtocol.a(SYProtocol.o): Relocations in generic ELF (EM: 3)
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: SYProtocol.a(SYProtocol.o): Relocations in generic ELF (EM: 3)
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: SYProtocol.a(SYProtocol.o): Relocations in generic ELF (EM: 3)
SYProtocol.a: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
请教出错原因
...全文
相关推荐
基于ARM和Linux的交叉编译环境建立方法
嵌入式交叉编译环境的建立,对初学者来说是值得一看,对整体上可以有一个清晰的了解!
最全面mplayer音视频linux交叉编译成功移植(支持alsa和oss)
综合了网上其他mplayer的移植教程,在Linux交叉编译通过的支持alsa和oss架构的mplayer,有详细的介绍和常见问题出错解决方案,该mpalyer可直接移植到嵌入式开发板上运行,实现板子的音视频播放。
交叉编译器的制作与安装
讲述建立基于ARM平台的交叉工具链,所以目标平台名为arm-linux-gnu。通常构建交叉工具链的3种方法。
构建ARMLinux交叉编译工具链.doc
构建ARMLinux交叉编译工具链.doc
Ubuntu实现树莓派交叉编译
本文是用Ubuntu来实现树莓派交叉的编译


