# 编译环境搭建 **Repository Path**: onecan/compile_build ## Basic Information - **Project Name**: 编译环境搭建 - **Description**: windows端编译arm端程序的环境搭建 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-06-21 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 目的 # 本文档编写目的是说明在windows端如何便捷开发arm平台上执行程序的环境搭建 ## 1 使用共享文件夹方式 ## 这种方式的思想是在arm平台这边搭建一个共享文件夹,将这个共享文件夹在windows上访问,进行代码的编辑,远程在arm上编译工作 1. 准备 1. arm需要连接网络,确保和window主机在一个局域网环境下,确保互相可以ping通 2. arm 端需要搭建ssh服务,确保windows可以远程连接 apt-get install ssh 假设需要root登录,需修改sshd配置文件,开重启服务 路径 /etc/ssh/sshd_config 确保 PermitRootLogin yes 重启服务 service ssh restart 3. arm 搭建samba服务器,实现windows访问arm上的文件 安装samba服务器 apt-get install samba 修改配置: 配置文件路径:/etc/samba/smb.conf 添加共享文件夹,新建一个需要作为共享的文件夹 :mkdir /home/Lark/samba_dir 添加访问权限,防止windows上不可写的问题: chmod -R 777 /home/Lark/samba_dir 在配置文件中添加配置选项 [Lark_share_dir] path = /home/Lark/samba_dir writeable = yes read only = no guest ok = yes 重启samba服务:service samba restart 测试windows上可以访问,可写可读 ![1](./Images/test_share_dir.gif) 4. 需要自己编译makefile用于编译 2. 代码编辑 1. 在共享文件夹下从服务器上得到最新代码或者将代码拷贝到共享文件夹下 2. 在vscode中,打开共享文件夹所在目录 ![2](./Images/open_dir.gif) 3. 可以正常编辑代码 3. 编译代码 1. 将vscode的默认cmd设置为git的bash.exe ![3](./Images/windows_bash.png) 2. 使用ctrl+`呼出终端或者使用呼出终端 ![4](./Images/vscode_terminal.png) 3. 在呼出的终端上远程登录到存有代码的arm上 ![5](./Images/login.gif) 4. 使用编写好的makefile去编译代码:在当前登录的终端,执行make命令, ![5](./Images/make.gif) 有错误可以及时修正编译,运行测试都可以在终端完成 ## 2 使用交叉编译链 ## 这种方法的思想是在本地搭建arm的交叉编译链,在windows上完成编辑和编译的行为,将生产好的文件拷贝到arm板上去运行测试,拷贝的动作可以参考方法1的映射共享文件夹的方式去拷贝 具体搭建方法如下: 1. 将本目录下的mingw拷贝的c盘目录下 2. 设置环境变量:在本地计算的高级属性里,将C:\mingw\arm-linux-gnueabihf\bin;C:\mingw\bin;C:\mingw\msys\1.0\bin;C:\mingw\arm-linux-gnueabihf\bin; 依次添加到PATH路径下 ![6](./Images/add_path.gif) 3. 检测环境变量是否正确 打开windows命令行窗口,输入make和gcc及arm-linux-gnueabihf-gcc;看是否报错,假设执行报命令未找到,则环境变量有问题,检测环境变量设置 ![7](./Images/check_path_isok.gif) 4. 设置Lark交叉编译链需要的头文件和库文件,将 lark文件夹拷贝到本地的F盘下,注意:拷贝的盘符不同,注意修改对应makefile下的配置,配置到合适的盘符,目前码云中的makefile已经修改完成,环境搭建好后,可直接在编译。 5. 测试 进入test目录,在文件夹空白处,按住shift右击,选择在此处打开命令窗口,执行make clean,make,如果正常,则生成hello 执行程序,拷贝到Lark上,添加执行权限,执行,假设打印hello world则说明,交叉编译链可以正常使用 ![8](./Images/test_make.gif) 6. 将生成的代码或者库文件拷贝或者传输到arm端去运行测试 ## 3. 关于调试 ## 调试这块还需要完善,目前的想法是,使用远程连接,在远程连接中使用gdb或者python gdb去调试,待寻找尝试到vscode这边比较好的gdbsever插件或者第三方工具后,以期解决,目前使用gdbserver命令行去调试和远程过去去gdb调试,复杂度相当。