网站建设有限公,怎么用ps做网站超链接,内部劵网站怎么做,做自己的网站需要多少钱目录
一 简单了解交叉编译
① 什么是交叉编译
② 为什么需要交叉编译
③ 宿主机和目标机
二 搭建交叉编译工作环境
① 安装工具链
② 配置环境变量
● 配置临时环境变量
● 配置永久环境变量
三 交叉编译宿主机和目标机
● 宿主机编译生成的可执行文件下载到目…目录
一 简单了解交叉编译
① 什么是交叉编译
② 为什么需要交叉编译
③ 宿主机和目标机
二 搭建交叉编译工作环境
① 安装工具链
② 配置环境变量
● 配置临时环境变量
● 配置永久环境变量
三 交叉编译宿主机和目标机
● 宿主机编译生成的可执行文件下载到目标机开发板
四 交叉编译带wiringPi库的程序
● 将树莓派中自带的wiringPi库下载到Ubuntu或宿主机中
五 软链接和硬链接
① 软链接
② 硬链接
六 结合四和五进行编译 一 简单了解交叉编译
① 什么是交叉编译 1编译是在一个平台上生成在该平台上的可执行代码 2交叉编译是在一个平台上生成另一个平台上的可执行代码。 ● 我们再windows上面编写C51代码并编译成可执行代码如xx.hex是在c51上面运行不是在windows上面运行
● 我们在ubuntu上面编写树莓派的代码并编译成可执行代码如a.out是在树莓派上面运行不是在ubuntu linux上面运行
② 为什么需要交叉编译
● 平台上不允许或不能够安装我们所需要的编译器比如C51
● 因为目的平台上的资源贫乏无法运行我们所需要编译器
● 树莓派作为一款强大的开发板同样也需要用到交叉编译。树莓派有时因为目的平台还没有建立暂无操作系统所以根本不能运行编译器。
● 操作系统也是代码也要编译
③ 宿主机和目标机
平台运行需要两样至少东西bootloader启动引导代码以及操作系统核心。 ● 宿主机host 编辑和编译程序的平台一般是基于X86的PC机通常也被称为主机电脑X86。● 目标机target用户开发的系统通常都是非X86平台。host编译得到的可执行代码在target上运行树莓派ARM。 二 搭建交叉编译工作环境
① 安装工具链
工具链下载网址https://github.com/raspberrypi/ 1 将下载好的工具链文件放入Windows中与Ubuntu的共享文件夹中
2 打开Ubuntu从共享文件夹拷贝到工作目录。输入命令
cp /mnt/hgfs/share/tools-master.zip .//我的共享文件名是share
3 解压文件 unzip tools-master.zip
4 进入解压好的文件目录中依次进入如下目录直到bin目录64位计算机就如下选择
cd tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
5ls进入bin目录里找到 arm-linux-gnueabihf-gcc (6) ls -l 查看bin目录底下各文件权限arm-linux-gnueabihf-gcc作为软连接实际用到的可执行程序是它后面的arm-linux-gnueabihf-gcc-4.8.3 7指令arm-linux-gnueabihf-gcc -v 检查交叉工具链是否是4.8.3版本 ② 配置环境变量 临时只在当前页面有效风险性高离开当前页面又需要重新配置 永久任何页面或路径下都有效安全可靠 1Linux环境变量的作用和配置方法其实和Windows的环境变量一样不一样的只有界面而已 2在上面操作交叉编译工具链可以看到要使用工具链就必须进入层层目录繁琐且麻烦降低开发效率 3配置环境变量就能很好的解决这一问题 ● 配置临时环境变量
1echo $PATH :显示当前的环境变量 2pwd 显示当前路径并复制 3export PATH :配置环境变量 红线部分 当前路径
export PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/dhw/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin 4回车确定cd 回到工作目录
5arm-linux-gnueabihf-gcc -v 检查 ● 配置永久环境变量
1修改工作目录下的.bashrc 隐藏文件配置命令终端的vi /home/dhw/.bashrc 打开后在文本最后一行加入以下内容
export PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/dhw/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin 2source /home/dhw/.bashrc 加载配置文件马上生效配置。
三 交叉编译宿主机和目标机
❄检查交叉编译工具链arm-linux-gnueabihf-gcc -v
❄在Ubuntu上编写一个简单的程序程序的文件名为demo1.c ● 常规编译gcc demo1.c -o test_1。生成test_1这个可执行程序 ● 交叉编译arm-linux-gnueabihf-gcc demo1.c -o test_2 。生成test_2这个可执行程序 ❄用file命令查看可程序test_1和test_2的属性 ● test_1在x86-64位计算机上面运行宿主机-电脑无法在ARM平台上运行 ● test_2在ARM平台上运行目标机-树莓派无法在X86平台上运行 ● 宿主机编译生成的可执行文件下载到目标机开发板 scp test_2 pi192.168.x.xxx:/home/pi 指令 文件名 开发板用户名开发板地址开发板的绝对路径 ❄ 此方法也可以将目标机文件传至宿主机 四 交叉编译带wiringPi库的程序
说明在树莓派中编写带wiringPi库的程序时比如IO口直接在程序中加头文件#include wiringPi.h在编译的时候-l链接wiringPi库即可因为树莓派自带有wiringPi库在/usr/lib目录下。在Ubuntu中或者宿主机中没有自带wiringPi的库那么很明显无法顺利完成带wiringPi库程序的交叉编译。
● 将树莓派中自带的wiringPi库下载到Ubuntu或宿主机中
① cd /usr/lib :树莓派wiringPi库的文件路径
② ls -l |grep wiringPi :过滤出只有wiringPi库的相关文件 ③ 将软链接libwiringPi.so指向的libwiringPi.so.2.50下载到Ubuntu或宿主机中
scp libwiringPi.so.2.50 dhw192.168.x.x:/home/dhw/lessonPI
指令 需要拷贝的文件名 目标用户名 ip 拷贝的目标路径
注意这里要拷贝软连接指向的文件如果直接拷贝软链接到UbuntuUbuntu里并不会生成我们要的软链接。
那么需要自己来生成软链接具体如下
五 软链接和硬链接
① 软链接 ● 软链接文件有类似于Windows的快捷方式 ● 在符号连接中文件实际上是一个文本文件其中包含的有另一文件的位置信息 ● 在选定的位置上生成一个文件的镜像不会占用磁盘空间。 生成方法
ln -s libwiringPi.so.2.50 libwiringPi.so
指令 参数 要被链接的文件 要生成的软链接文件名字 ② 硬链接 ● 在选定的位置上生成一个和源文件大小相同的文件 ● 硬链接通过索引节点来进行链接在Linux的文件系统中保存在磁盘分区中的文件不管是什么类型都给它分配一个编号称为索引节点号(Inode Index)。在Linux中多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接 ● 允许一个文件拥有多个有效路径名这样用户就可以建立硬连接到重要文件以防止“误删”的功能。因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接只有当最后一个连接被删除后文件的数据块及目录的连接才会被释放也就是说文件真正删除的条件是与之相关的所有硬连接文件均被删除。 生成方法
ln libwiringPi.so.2.50 libwiringPi.so
没有参数 -s
❄ 无论是软链接还是硬链接文件都保持同步变化。
六 结合四和五进行编译
编译时通过-I -L来指定相关库的路径 ● -I (注意是大写的i) 给gcc添加自定义的头文件的路径 ● -L 给gcc添加额外的搜索库的路径 说明将树莓中名为demo2.c的程序文件拷贝到Ubuntu中demo2.c是需要连接wiringPi库使用的程序-I的wiringPi库的头文件是自行网上下载的wiringPi库的包-L的wiringPi库是树莓拷贝到Ubuntu中的 。
arm-linux-gnueabihf-gcc demo2.c -I /home/dhw/lessonPI/WiringPi/WiringPi/wiringPi -L. -lwiringPi -o test
交叉编译工具链 树莓关于IO口文件 -I wiringPi库头文件路径 -L wiringPi库 编译通过