我一直在研究一个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
Run Code Online (Sandbox Code Playgroud)
现在我手动编译每个文件,它工作得很好,但我想在这里进一步理解.
谢谢!
我喜欢使用犰狳线性代数库.将八度.m文件移植到C++时变得非常好,特别是当你必须使用本征方法时.
但是当我不得不从我的原生香草G ++中取出我的程序并将其转储到我的ARM处理器上时,我遇到了问题.因为我花了几个小时糊涂我的方式虽然我想分享,所以其他人可能会避免一些挫折.
如果其他人可以添加任何其他我会喜欢它.这是我用来解决这个问题的过程,肯定不是唯一或最好的方法.
我有一个奇怪的问题.我正在尝试将文件的响应回显到另一个文件中.比如我喜欢用:
# run_location=`find -name 'program.exe'`
# echo $run_location>storagefile.txt
Run Code Online (Sandbox Code Playgroud)
所以我可以保存我的程序所在的位置以供日后使用.但是现在我有一个问题,我想抓住程序的输出并存储它.唯一的问题是输出包含很多星号(*),当我回显*时,它回应我目录中的所有文件名,产生一个混乱的文件.
该文件的输出是:
# ./device -FD
*******************************
* Firmware : 1.0034 *
* Date : 011209 *
*******************************
Run Code Online (Sandbox Code Playgroud)
我想保存文件详细,有什么方法可以解决这个问题吗?可能还有其他方法可以将输出保存到文件中?我知道用星号输出并不是最好的想法,但我无法控制如何获得这些数据.
谢谢!