Raspberry Pi 的C++交叉编译环境配置 (2)
上一节我们把RPi的交叉编译器准备好了,但是实际上并没有配置好编译器所需要的库文件。
首先,我们做一些配置,让Ubuntu主机与树莓派通信更加方便。为了方便区分,每段代码的上方用host表示在Ubuntu中执行的命令raspberry表示在树莓派中执行的命令
添加树莓派的IP到主机的host文件中:
host
1vi /etc/hosts移动光标到相应的地方按 i 进入编辑模式。添加主机的IP地址和名称,然后 :wq 保存
添加公钥到RPi,这样以后对RPi的远程操作不需要重新输入密码了
host
1ssh-keygen -t rsa一路确认不要输入其他参数,成功后会在 ~/.ssh 目录下生成公钥和私钥 id_rsa id_rsa.pub
将公钥复制到RPi的 ~/.ssh目录下,以后通过Ubuntu主机就可以直接登录RPi不需要重复输入密码了。
raspberry
1scp ~/.ssh/id_rsa.pub pi@raspberry:~/.ssh/id_rsa.pub然后登录到RPi 把id_rsa.pub的内容添加到authorized_keys文件中
raspberry
12cd .sshcat id_rsa.pub>>authorized_keys回到Ubuntu主机的terminal中测试
host
1ssh pi@raspberry如果不需输入密码了说明配置成功了
下一步,我们在Ubuntu上建立一个文件夹用来存放RPi的库和头文件。然后通过rsync命令把树莓派上面的文件拷贝到本地,注意在此之前要上一步的操作已经完成,否则请把rsync命令中的raspberry替换成实际的IP地址。
host
|
|
这里rsync会把RPi上整个 lib 和 usr目录拷贝过来,如果需要Qt库的话可以在拷贝之前先在RPi上配置好Qt开发所需的库然后再拷贝。
拷贝结束后我们写一个测试程序来试一试吧。
用编辑器输入以下代码,保存为 test.cpp
|
|
在Terminal中用编译器编译一下
host
|
|
可以看到这时目录中生成了 testapp执行文件,如果此时执行这个文件会提示
bash: ./testapp: cannot execute binary file: Exec format error
这是因为用交叉编译工具编译出来的执行文件是以arm平台作为目标的,而我们的Ubuntu主机是X86架构。可以通过file命令来验证。
现在我们把testapp传输到RPi上来执行
raspberry
|
|
切换到RPi的Terminal上来执行
raspberry
|
|
窗口输出
|
|
至此,我们对编译环境的配置就完全结束了,下一节我们开始配置VSCODE