【发布时间】:2011-11-17 14:40:20
【问题描述】:
我从事 C++ 项目已有一段时间了,但想将其移植到我的 arm 处理器上。我已经拥有了所有的交叉编译工具(我正在使用 CodeSourcery),并且认为我可以更改我的 makefile 以指向该编译器。它使用默认的 g++ 编译良好,但是当尝试指向交叉编译器的 make 时,我得到重定位错误:
/home/oryan/CodeSourcery/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.2/../../../../arm-none-linux-gnueabi /bin/ld: ServerSocket.o: 通用 ELF 中的重定位 (EM: 3)
ServerSocket.o:无法读取符号:文件格式错误
collect2: ld 返回 1 个退出状态
make: *** [simple_server] 错误 1
似乎我没有设置正确的链接,或者它指向了错误的位置。我对 makefile 不是很熟悉,并且可能遗漏了一些明显的东西。我一直在使用的 makefile 来自 http://tldp.org/LDP/LG/issue74/tougher.html,删除了客户端:
# Makefile for the socket programming example
#
simple_server_objects = ServerSocket.o Socket.o simple_server_main.o
all : simple_server
simple_server: $(simple_server_objects)
/home/matt/CodeSourcery/bin/arm-none-linux-gnueabi-g++ -o simple_server $(simple_server_objects)
Socket: Socket.cpp
ServerSocket: ServerSocket.cpp
simple_server_main: simple_server_main.cpp
clean:
rm -f *.o simple_server
现在我正在手动编译每个文件,效果很好,但我想在这里进一步了解。
谢谢!
【问题讨论】:
标签: c++ makefile cross-compiling