Linux开发环境搭建
Linux下搭建C#开发环境
![Linux下搭建C#开发环境](https://img.taocdn.com/s3/m/1213420879563c1ec5da71ae.png)
文章来源/articles/116249.htm如果平时主要开发控制台类、组件、后端服务等程序,可以尝试在Linux类操作系统下搭建C#.Net 开发环境,好处是在Linux环境里你不用担心朋友或同事拿你的电脑来玩魔兽世界或者一不小心被装了一大堆流氓软件;-)先看看本篇文章最终效果:在Ubuntu里跑的开发环境MonoDevelop:1、Linux发行版的选择在Linuxux操作系统里只要安装Mono环境就可以开发C#程序,Linux的众多发行版RedHat/CentOS/Fedora、OpenSuse、Debian、Ubuntu都可以安装 Mono。
鉴于目前Ubuntu 容易安装、界面漂亮而且比较多人用作桌面环境,所以这里推荐使用Ubuntu 10.04 。
官方网站是:/在官方网站下载回来的是一个光盘映像文件(ISO格式),这里需要注意的是Ubuntu 共有4个不同版本的ISO文件:Desktop版、Alternative版、Netbook版、 Server版。
一般下载Desktop 就可以了。
如果你想通过网络启动安装程序或者使用硬盘安装则需要下载Alternative版。
如果你的电脑硬件配置比较低(内存少于等于 512MB),还可以下载一个轻量级的衍生版:Xubuntu (/),如果你的电脑只有256MB内存,那还可以下载另一个衍生版Lubuntu (/),这个更加轻量级,平时系统启动后只占用 70~100MB内存。
2、安装Ubuntu安装Ubuntu 的方法非常简单,跟装 WinXP差不多,只需点5,6次“下一步”过10来分钟就可以完成。
因为关于安装Ubuntu的过程已经有大量的文章介绍,这里就不再赘述了,下面主要列举一下安装方式,大家可以根据自己的具体情况选择合适的:(1)虚拟机安装如果你的电脑速度飞快,内存比较大,用这种方式安装最快,虚拟机软件推荐使用免费的VirtualBox。
先装好虚拟机软件,然后创建一个新的虚拟机,把下载回来的ISO文件挂靠到虚拟机,启动之后就可以安装了。
Linux操作系统下的C语言开发环境搭建测试题
![Linux操作系统下的C语言开发环境搭建测试题](https://img.taocdn.com/s3/m/0692575078563c1ec5da50e2524de518964bd3d5.png)
Linux操作系统下的C语言开发环境搭建测试题(答案见尾页)一、选择题1. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?A. 安装GCC编译器B. 设置环境变量C. 编译和运行C程序D. 配置终端2. 在Linux操作系统中,以下哪个命令可以用来编译和运行C程序?A. gccB. g++C. chmodD. make3. 在Linux操作系统中,如何修改默认的编译器路径?A. 修改PATH环境变量B. 使用export命令C. 编辑/etc/profile文件D. 修改gcc的配置文件4. 在Linux操作系统中,安装了GCC编译器后,如何验证其安装成功?A. 输入gcc --version命令B. 输入gcc -v命令C. 输入gcc --configure命令D. 输入gcc -E命令5. 在Linux操作系统中,如何配置终端以方便进行C语言编程?A. 更改终端的提示符B. 安装tmux或screen工具C. 配置bashrc文件6. 在Linux操作系统中,如何使用GDB调试器调试C程序?A. 安装gdb软件包B. 编译程序时添加-g选项C. 使用gdb命令启动程序D. 查看程序内存布局7. 在Linux操作系统中,如何查看源代码文件的内容?A. 使用cat命令B. 使用less命令C. 使用grep命令D. 使用find命令8. 在Linux操作系统中,如何使用vi编辑器编辑C语言源代码文件?A. 进入vi编辑器B. 编辑文件内容C. 保存文件并退出vi编辑器D. 检查文件是否已保存9. 在Linux操作系统中,如何通过FTP上传和下载文件?A. 使用ftp命令B. 使用sftp命令C. 使用scp命令D. 使用ls命令10. 在Linux操作系统中,如何设置用户权限以确保C语言源代码的安全?A. 使用chmod命令B. 使用chown命令C. 使用umask命令D. 使用acl命令11. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?B. 设置环境变量C. 配置编译选项D. 编译和运行C程序12. 在Linux系统下,如何修改一个文件的权限使其可读可写?A. chmod 666 filenameB. chmod 777 filenameC. chmod 644 filenameD. chmod 755 filename13. 在Linux系统下,使用以下哪个命令可以查看文件的详细信息,如文件大小、创建日期等?A. ls -lB. df -hC. tar -xvf file.tarD. stat filename14. 在Linux系统下,如何使用vi编辑器打开一个文件?A. vi filenameB. vim filenameC. nano filenameD. emacs filename15. 在Linux系统下,安装了GCC编译器后,如何验证其是否正确安装?A. echo $PATHB. which gccC. gcc --versionD. all of the above16. 在Linux系统下,如何创建一个新的目录并进入该目录?A. mkdir new_directoryB. cd new_directoryC. rmdir new_directoryD. mkdir -p new_directory17. 在Linux系统下,如何使用grep命令在文本中搜索特定的字符串?A. grep "search_string" filenameB. grep "search_string" filename | lessC. grep "search_string" filename | moreD. all of the above18. 在Linux系统下,如何修改一个文件的换行符为LF(Unix风格)?A. dos2unix filenameB. unix2dos filenameC. cat filename | tr '' '' > filenameD. all of the above19. 在Linux系统下,如何使用find命令查找特定文件?A. find / -name "filename_pattern"B. find . -type f -name "filename_pattern"C. find / -name "filename_pattern" -printD. all of the above20. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?A. 安装编译器B. 配置编译环境变量C. 安装文本编辑器D. 编写、编译和运行C源代码21. 在Linux操作系统下,以下哪个命令可以用来编译和运行C语言源代码?A. gccB. g++C. chmodD. make22. 在Linux操作系统下,以下哪个命令可以用来安装一个新的C语言库?A. apt-getB. yumC. pacman23. 在Linux操作系统下,以下哪个命令可以用来查看源代码的层次结构?A. catB. grepC. treeD. less24. 在Linux操作系统下,以下哪个命令可以用来创建一个新目录?A. mkdirB. rmdirC. touchD. cp25. 在Linux操作系统下,以下哪个命令可以用来删除一个文件?A. rmB. mvC. rmdirD. cp26. 在Linux操作系统下,以下哪个命令可以用来复制文件或目录?A. cpB. mvC. rmD. ln27. 在Linux操作系统下,以下哪个命令可以用来查看文件的内容?A. catB. grepC. lessD. head28. 在Linux操作系统下,以下哪个命令可以用来查找文件?A. findB. locateD. man29. 在Linux操作系统下,以下哪个命令可以用来查看当前目录的内容?A. lsB. cdC. pwdD. man30. Linux操作系统下,C语言开发环境的搭建需要哪些步骤?A. 安装GCC编译器B. 配置内核头文件C. 安装文本编辑器D. 配置终端环境31. 在Linux操作系统下,如何验证C语言编译成功?A. 编译一个简单的C源代码,观察是否有语法错误B. 使用命令行进入编译后的目录,查看生成的可执行文件C. 在终端中输入编译命令,观察是否有错误信息D. 将编译后的程序在另一个系统中运行,检查功能是否实现32. Linux操作系统下,C语言开发常用的文本编辑器有哪些?A. VimB. EmacsC. nanoD. Kate33. 在Linux操作系统下,如何配置终端环境以便于C语言编程?A. 设置默认编码为UTF-8B. 配置PATH环境变量,确保编译器路径已添加C. 安装并配置版本控制工具(如Git)D. 配置别名,提高编程效率34. 在Linux操作系统下,C语言开发中常用的调试工具有哪些?A. GDB调试器B. DDD调试工具C. Valgrind内存检测工具D. printf()函数调试35. Linux操作系统下,C语言开发环境的搭建过程中,如何配置网络连接?A. 修改网络配置文件,设置静态IP地址B. 关闭防火墙,确保端口畅通C. 配置DNS服务器,解析域名D. 使用Wireshark工具监控网络流量36. 在Linux操作系统下,C语言开发环境中,如何管理项目文件?A. 使用版本控制工具(如Git)进行项目管理B. 使用文件系统树形结构管理项目文件C. 使用目录和文件名来管理项目文件D. 使用标签系统管理项目文件37. Linux操作系统下,C语言开发环境的搭建完成后,如何优化编译速度?A. 升级GCC编译器到最新版本B. 优化编译选项,减少编译时间C. 使用增量编译,避免重复编译D. 使用并行编译,提高编译速度38. 在Linux操作系统下,C语言开发环境的搭建过程中,如何安装必要的库文件?A. 使用包管理器(如apt或yum)安装库文件B. 从官方网站下载库文件并手动安装C. 从源代码编译库文件并安装D. 使用静态链接库文件,减少动态链接的内存开销39. Linux操作系统下,C语言开发环境的搭建完成后,如何进行代码测试和调试?A. 使用GDB调试器进行单步调试B. 使用DDD调试工具查看内存状态C. 使用printf()函数打印变量值进行调试D. 使用单元测试框架进行自动化测试40. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?A. 安装GCC编译器B. 配置环境变量C. 安装文本编辑器D. 编译和运行C程序41. 在Linux操作系统下,以下哪个命令可以用来查看系统中的所有进程?A. ps -efB. topC. freeD. all42. 在Linux操作系统下,如何修改一个文件的权限使得文件所有者具有读写权限,其他用户只具有读权限?A. chmod 644 filenameB. chmod 755 filenameC. chmod 664 filenameD. chmod 777 filename43. 在Linux操作系统下,使用以下哪个命令可以查看当前目录下的隐藏文件?A. ls -aB. ls -lC. ls -hD. ls -d44. 在Linux操作系统下,如何安装一个新软件包?A. apt-get updateB. yum install package_nameC. pacman -S package_nameD. brew install package_name45. 在Linux操作系统下,如何使用grep命令查找包含特定字符串的文件?A. grep "search_string" filenameB. grep "search_string" /path/to/filenameC. grep "search_string" $(find /path/to/search -type f)D. grep "search_string" /path/to/search/*46. 在Linux操作系统下,如何修改文件的所有者和组?A. chown new_owner:new_group filenameB. chown new_owner:new_group /C. chown new_owner:new_group *D. chown new_owner:new_group .47. 在Linux操作系统下,如何创建一个新的用户组?A. groupadd group_nameB. groupadd -g GID group_nameC. groupadd -G GID group_nameD. groupadd -p group_name48. 在Linux操作系统下,如何设置Shell提示符?A. export PS1="\u@\h:\w\$ "B. export PS1="\u@\h:\w\$ "C. export PS1="\u@\h:\w\\$ "D. export PS1="\u@\h:\w\$ "二、问答题1. 请简述在Linux操作系统下搭建C语言开发环境的步骤。
02.ESP32教程-linux开发环境搭建
![02.ESP32教程-linux开发环境搭建](https://img.taocdn.com/s3/m/2b9458245a8102d277a22f0c.png)
操作系统:Ubuntu321、打开shell,输入mkdir esp创建esp目录;输入mkdir download,创建download文件夹,输入ls检查是否创建成功2、输入cd download/进入download目录;输入wget https:///dl/xtensa-esp32-elf-linux32-1.22.0-59.tar.gz下载linux32为系统下的工具链3、输入tar -xzf xtensa-esp32-elf-linux32-1.22.0-59.tar.gz解压工具链,会在download目录下产生一个xtensa-esp32-elf文件夹,然后输入mv xtensa-esp32-elf ~/esp/将此文件夹移动到~/esp/目录下4、输入export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin添加环境变量。
alias get_esp32="export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin" 使环境变量永久生效添加环境变量。
输入nano ~/.bashrc,编辑bashrc文件,粘贴export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin到bashrc文件的最后一行,这样就可以将工具链bin目录添加到环境变量中,按ctr+x,退出编辑输入y确认。
这样电脑重启后环境变量依然有效5、输入cd ~/esp/进入esp目录,输入git clone --recursive https:///espressif/esp-idf.git 克隆esp_idf固件库6、输入cd ~/esp/esp-idf 进入esp_idf目录,输入git submodule update –init 初始化sdk。
7、输入cd examples/01_hello_world/进入历程中得hello_world工程。
Linux虚拟机中Node.js开发环境搭建
![Linux虚拟机中Node.js开发环境搭建](https://img.taocdn.com/s3/m/51736e9ecd22bcd126fff705cc17552707225efa.png)
Linux虚拟机中Node.js开发环境搭建Node.js 开发环境搭建:1、下载CentOS镜像⽂件和VMWare虚拟机程序;2、安装VMWare——>添加虚拟机——>选择CentOS镜像⽂件即可默认安装带有桌⾯的Linux虚拟机。
也可以选择⾃定义安装,只安装命令⾏模式(BasicServer),在等待CentOS安装程中可以设置登录密码;3、CentOS7安装完成后,默认关闭⽹卡,需要⼿动开启;4、打开终端,输⼊su root,然后输⼊登录密码,即可获得root权限;5、输⼊yum install epel-release安装epel;6、安装nodejs有两种:(安装⾼版本的nodejs会⾃动安装npm) 6.1 ⾃动安装:输⼊yum install nodejs安装node.js,输⼊node -v查看node版本; 6.2 ⼿动安装: 6.2.2 解压⽂件:# tar xvf node-v0.10.15.tar.gz 6.2.3 进⼊解压⽬录:# cd node-v0.10.15 6.2.4 检查配置:# ./configure 6.2.5 如果检查配置出错,需要安装gcc-c++:# yum install gcc-c++,否则跳过此步骤 6.2.6 进⾏安装:# make install,安装完成输⼊node -v查看node版本7、输⼊yum install mongodb-server安装mongodb服务器端;8、输⼊yum install mongodb安装mongodb客户端,输⼊mongo --version查看mongo版本;9、输⼊yum install redis安装redis,输⼊redis-cli --version查看redis版本;10、下载安装Sublime Text 3 ;11、下载安装WebStorm ;⾄此,环境已经安装完成。
下⾯⽤命令输出"Hello World":1、在终端⾥输⼊vim test.js 创建⼀个js⽂件,同时进⼊vim编辑⽂件;2、输⼊console.log("Hello World"),保存(:w),退出(:q);3、⽤node命令执⾏test⽂件:node test.js,控制台输出"Hello World"。
实验报告-linux环境开发
![实验报告-linux环境开发](https://img.taocdn.com/s3/m/ec146711b9f3f90f76c61bdd.png)
实验报告- 一、交叉编译环境搭建:在没有root 用户权限时,用sudo 来执行超级权限的命令。
解压缩后,最好要加入path 中,方便使用。
Path 文件在vim /home/ubuntu/.bashrc 加入的语句为export PATH=$PATH:/usr/local/arm/2.95.3/bin二、Ubuntu 10.04 下安装配置NFS安装nfs后,要创建共享目录,是为了上传文件用,而串口作为命令控制和输出的功能。
而且必须要设定好权限允许读写。
然后重启nfs服务。
注意:实际的程序文件保存在共享文件夹后,并没有上传到板卡的存储上,还是存在在宿主机的存储中,两者mount在一起,运行时,板卡执行是共享文件夹的程序。
三、挂载nfs文件系统配置minicom, /dev/ttyS0是表示com串口端口1,配置ip后,挂载nfs文件系统,mount两个文件夹。
四、Hello程序测试用arm-linux-gcc 来编译文件,copy到共享目录后,在mincom里执行程序。
五、编程实验1、Client程序:若是自己创建的配置文件,需要替换最后的回车符为文字结束符。
2、server程序:在while中不断等待客户端连入时,需要把每次READ输入参数的功能创建一个新的线程来响应,而不影响下一次客户端的连入。
ret=pthread_create(&id,NULL,(void*)thread,NULL);创建一个新的线程。
这个thread函数里完成的功能是,一旦客户端输入,即刻打出输入字符,并close这个线程。
3、makefile:执行顺序与行排列无关,注意编译要用超级用户,并且server 程序编译要带 lpthread,连接多线程的库。
综述,第一次实际接触到板卡,对开发过程和开发模式有了实质性的飞跃。
对linux下的开发有了初步的了解。
并发现了很多自己存在的问题。
理论和实际操作有很大差距,在实际操作时,会出现很多想象不到的问题。
Linux操作系统-实验1-环境搭建-指导书-PPT版本-V1
![Linux操作系统-实验1-环境搭建-指导书-PPT版本-V1](https://img.taocdn.com/s3/m/34ebef301fb91a37f111f18583d049649a660e57.png)
Linux操作系统第一章:Linux简介与系统安装实验一:实验环境搭建一台宿主机(Windows系统)加两台虚拟机(Desktop+Server)要求:(1)掌握VMware虚拟机的安装(2)利用VMware虚拟机安装Ubuntu Linux18.04桌面版操作系统(3)利用VMware虚拟机安装Ubuntu Linux18.04服务器版操作系统(4)从宿主机登录桌面环境和服务器环境(SSH登录)(5)练习涉及到的基本命令,如apt-get、ifconfig、ssh等(6)练习vim编辑文件基本操作等Tips:(1)绘制网络拓扑图(2)把遇到的问题和如何解决记录下来。
实验环境设置☐宿主机(Windows)•网络配置VMware Network Adapter(VMnet8)☐客户机•Ubuntu-Server(ubuntu-18.04.6-live-server-amd64)•Ubuntu-Desktop(ubuntu-18.04.6-desktop-amd64)虚拟机安装安装时网络类型选择NAT方式安装完成后的两台Ubuntu虚拟机宿主机:Windows记录宿主机IP地址客户机1:Ubuntu-Server命令行模式记录IP:192.168.126.130客户机2:Ubuntu-Desktop图形化操作方法记录IP:192.168.126.131NAT模式宿主机:Windows192.168.126.1192.168.126.130192.168.126.131客户机1:Ubuntu-Server客户机2:Ubuntu-DesktopSSH服务1.安装SSH服务2.启动SSH服务3.配置SSH服务(可选)4.验证SSH服务Desktop版客户机安装SSH服务Desktop版客户机安装SSH服务:sudo apt-get install openssh-serverDesktop版客户机启动SSH服务: sudo systemctl start sshDesktop版客户机启动SSH服务: sudo systemctl start sshDesktop版客户机端修改SSH配置文件:端口22修改为1022 vi /etc/ssh/sshd_configSSH验证-从宿主机连接Desktop客户机2: ********************.126.131SSH验证-从宿主机连接Server版客户机1: ***********************.126.130Desktop版客户机查看SSH状态:记录监听端口和连接情况Server版客户端1查看SSH状态Desktop版客户机安装 net-tools:sudo apt-get install net-toolsDesktop版客户机查看IP地址: ifconfigDesktop版客户机查看网络连接情况:Netstat -aServer版客户机查看网络连接情况:Netstat -a。
Linux系统下Ubuntu 16.04 LTS 32bit 英文版的RT-Thread开发环境搭建
![Linux系统下Ubuntu 16.04 LTS 32bit 英文版的RT-Thread开发环境搭建](https://img.taocdn.com/s3/m/0f96792b16fc700abb68fcd3.png)
Linux系统下Ubuntu 16.04 LTS 32bit 英文版的RT-Thread开发环境搭建1. 搭建步骤com1.1. 下载交叉编译工具cd ~1.2. 解压缩交叉编译工具tar -xzf xtensa-esp32-elf-linux32-1.22.0-61-gab8375a-5.2.0.tar.gz1.3. 安装必要的软件sudo apt-get install git wget make libncu1.4. 获取代码cd ~git clonehttps://github/BernardXiong/1.5. 修改工程中交叉编译工具的路径修改~/rtthread-esp-idf/rtconfig.py中exec_path的路径为:注路径中的ss为linux当前用户的用户名1.6. 编译首先修改个Makefile中的一个小错误,python 那行命令路径需要修改:pythonesp-idf-port/esp-idf/components/esptool_py/esptool/esptool.py --chip esp32elf2image --flash_mode "dio" --flash_freq "40m"--flash_size "4MB" -ortthread.bin rtthread-esp32.elfcd ~/rtthread-esp-idf1.7. 下载1) 由于Linux下普通用户无权限直接操作/dev/ttyUSB0,首先给当前用户加入相应的权限,以便后边烧写时不需要使用sudo权限:sudo usermod -aG dialout ss注:ss为linux当前用户的用户名python esp-idf-port/esp-idf/components/esptool_py/esptool/esptool.py--chip esp32 --port /dev/ttyUSB0 --baud 115200 --before"default_reset" --after "hard_reset" write_flash -z--flash_mode "dio" --flash_freq "40m" --flash_size detect0x1000 bootloader.bin 0x10000 rtthread.bin 0x8000 parchmod a+xburn_flash.batcd ~/rtthread-esp-idf(波特率:115200)2. 其他说明 2.1. Linux64bit、Windows及macos的交叉编译工具具体见https://github/BernardXiong/rtthread-esp-idf,里边有其他系统交叉编译工具的下载路径。
Linux下at91sam9x25嵌软开发测试环境搭建文档
![Linux下at91sam9x25嵌软开发测试环境搭建文档](https://img.taocdn.com/s3/m/c813c941f12d2af90342e638.png)
硬件环境软件环境1 安装虚拟机1.1虚拟机选择Ubuntu 11.10以上版本(升级比较方便)1.2虚拟机的配置与升级apt-cache search package 搜索包apt-cache show package 获取包的相关信息,如说明、大小、版本等sudo apt-get install package 安装包sudo apt-get install package - - reinstall 重新安装包sudo apt-get -f install 修复安装"-f = ——fix-missing"sudo apt-get remove package 删除包sudo apt-get remove package - - purge 删除包,包括删除配置文件等sudo apt-get update 更新源sudo apt-get upgrade 更新已安装的包sudo apt-get dist-upgrade 升级系统sudo apt-get dselect-upgrade 使用dselect 升级apt-cache depends package 了解使用依赖apt-cache rdepends package 是查看该包被哪些包依赖sudo apt-get build-dep package 安装相关的编译环境apt-get source package 下载该包的源代码sudo apt-get clean && sudo apt-get autoclean 清理无用的包sudo apt-get check 检查是否有损坏的依赖2 Linux下安装交叉编译环境2.1安装步骤1)下载arm-2011.03-42-arm-none-eabi-i686-pc-linux-2)命令行安装# tar xvzf arm-2011.03-42-arm-none-eabi-i686-pc-linux-# cd arm-2011.033 安装arm设备编程工具SAM Boot Assistant(SAM-BA)3.1 Windows下安装1)安装sam-ba_;2)安装USB CDC驱动;图 3.1图 3.2图 3.3图 3.4图 3.5图 3.7打开SAM-BA 2图 3.8图 3.93.2 Linux下安装1)解压sam-ba_;2)安装USB CDC驱动;1/ Login with administrator rights2/ Unload usbserial module if it is already running #rmmod usbserial3/ Load usbserial kernel module#modprobe usbserial vendor=0x03eb product=0x61244/ Verify that the USB connection is established#lsusb -d 03eb:6124Bus 004 Device 006: ID 03eb:6124 Atmel Corp5/ Know which USB connection is established#dmesgkernel: usb 4-2: new full speed USB device using uhci_hcd and address 5kernel: usb 4-2: configuration #1 chosen from 1 choicekernel: usbserial_generic 4-2:1.0: generic converter detectedkernel: usbserial_generic: probe of 4-2:1.0 failed with error -5kernel: usbserial_generic 4-2:1.1: generic converter detectedkernel: usb 4-2: generic converter now attached to ttyUSBx=> you will have to use /dev/ttyUSBx to connect to your boardRunning SAM-BA CDC Serial version :Launch 'sam-ba_cdc_ file, and select your board and the /dev/ttyUSBxdevice where your board in mounted on.- Update the kernel:# apt-get install linux-image-generic linux-headers-generic- On 64 bits version install 32 bits libraries:# apt-get install ia32-libs- Give sam-ba execute permission if needed:$ chmod +x sam-ba- Connect the board- Create a symlink on /dev/ttyACM0# ln -s /dev/ttyACM0 /dev/ttyUSB0- Launch sam-baTested on:Ubuntu 10.04 64 bits (Ubuntu 10.10 32 bits (Ubuntu 10.10 64 bits (Ubuntu 10.10 64 bits (Ubuntu 11.10 64 bits alpha3How to check if your kernel is up to date ?$ dmesgIf you have something like that (not exactly the same) it's ok:[227274.230016] usb 5-1: new full speed USB device using uhci_hcd and address 5[227274.395739] cdc_acm 5-1:1.0: This device cannot do calls on its own. It is not a modem.[227274.395768] cdc_acm 5-1:1.0: ttyACM0: USB ACM deviceIf you don't have this part: 'This device cannot do calls on its own. It is not a modem.',your kernel is probably not up to date or the cdc_acm patch has not been backported.4 示例4.1 下载AT91Bootstrap源码1)得到源码;2)解压# tar xvzf AT91Bootstrap-5series_#cd AT91Bootstrap-5series_1.24.2 配置AT91Bootstrap和选择启动媒介1) 从NAND FLASH启动#make at91sam9xnf_defconfig2)添加环境变量#vi .profilePATH="$PATH:/root/Public/arm-2011.03/bin"export PATH#souce .profile3)配置AT91Bootstrap#make menuconfig4.3 编译AT91Bootstrap#export $CROSS_COMPILE=” arm-none-eabi-”#make clear#make在../AT91Bootstrap-5series_1.2/binaries下产生at91sam9x5ek-nandflashboot- 4.4 使用AT91Bootstrap二进制文件1)从NAND flash启动A T91Bootstrap图 4.1在NAND和SPI无效的前提下,启动SAM-BA,烧AT91Bootstrap到NAND flash,如图4.1所示:(1)在SAM-BA图形用户界面上选择NandFlash媒介选项卡;(2)1)在NAND有效的前提下,在Scripts下拉列表框中选择“Enable NandFlash”;然后点击“Execute”按钮,完成NandFlash的初始化,如图4.2所示;图 4.2.12)清除芯片上原来烧的信息图 4.2.2结果如图 4.5所示。
如何在Linux终端中创建和管理虚拟化环境
![如何在Linux终端中创建和管理虚拟化环境](https://img.taocdn.com/s3/m/463f7e0fb80d6c85ec3a87c24028915f804d843c.png)
如何在Linux终端中创建和管理虚拟化环境Linux操作系统提供了丰富的虚拟化技术,可以帮助用户在单一的物理机上运行多个独立的虚拟机,从而更好地管理资源和提高系统的利用率。
本文将介绍如何在Linux终端中创建和管理虚拟化环境的方法,帮助读者快速上手。
一、安装虚拟化软件在开始创建和管理虚拟化环境之前,我们需要先安装虚拟化软件。
在Linux中,最常用的虚拟化软件是KVM(Kernel-based Virtual Machine),它是一个基于Linux内核的虚拟化解决方案。
可以通过以下命令来安装KVM:```sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils```安装完成后,我们需要将当前用户添加到libvirtd组中,以便于使用虚拟化功能:```sudo adduser <username> libvirtd```其中"<username>"需要替换为你的用户名。
安装和配置完成后,我们就可以开始创建和管理虚拟化环境了。
二、创建虚拟机1. 配置网络在创建虚拟机之前,我们需要先配置网络。
使用以下命令创建一个新的网络:```sudo virsh net-define network.xml```其中"network.xml"为网络配置文件的路径,可以根据实际情况进行修改。
创建完成后,启动网络:```sudo virsh net-start <network_name>```其中"<network_name>"为网络名称。
如果需要将网络设置为开机启动,可以使用以下命令:```sudo virsh net-autostart <network_name>```2. 创建虚拟机存储池虚拟机存储池用于存放虚拟机的磁盘镜像文件。
嵌入式linux应用开发完全手册
![嵌入式linux应用开发完全手册](https://img.taocdn.com/s3/m/04b95e0cae45b307e87101f69e3143323968f5af.png)
嵌入式linux应用开发完全手册
嵌入式Linux应用开发完全手册
一、前期准备
1. 分析终端设备环境—定制Linux发行版
要统计终端设备的处理性能、运行时可用资源和可用设备,以此确定可用的执行环境和硬件需求,确定适合终端设备构建Linux内核固件形式的Linux发行版本。
2. 开发环境搭建—构建buildroot环境
为了能从源码构建出符合终端设备和应用程序需求的Linux系统,需要构建出环境,可以编译内核以及外围软件在Linux下构建程序,以此为开发软件准备编译运行环境,可以使用Busybox和Buildroot等。
二、应用软件开发
1. 软件框架设计—工程预处理
软件框架设计是应用软件的基础,根据软件的功能和硬件构建环境,进行容量分析和形态化,分析设计软件工程框架,优化框架,将多个软件模块编译联编成一个完整的整体,构建业务功能交互流程,提高软件的执行效率和体验度。
2. 软件编译—工程链接编译
针对开发语言环境,例如Java或C、C+。
ARM-linux嵌入式开发环境安装参考手册
![ARM-linux嵌入式开发环境安装参考手册](https://img.taocdn.com/s3/m/92920305c8d376eeafaa31a5.png)
基础是你已经安装了Ubuntu,以及相关软件:超级终端minicom 及C/C++ compiler environment. 在Ubuntu上可使用下面终端命令安装minicoom和编译环境。
#sudo apt—get install minicom#sudo apt-get install build—essentialStep 1:将光盘 Linux 目录中的 arm—linux—gcc-4。
5.1—v6—vfp—20101103。
tgz 复制到 Lubuntu的当前目录下,执行解压命令:#sudo tar xvzf arm-linux-gcc-4.5.1-v6-vfp—20101103。
tgz –C /注意:C 后面有个空格,并且C 是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思.这样 arm—linux-gcc 的相关文件就Copy到root用户的Opt目录中Step 2:把编译器路径加入系统环境变量,运行命令#sudo gedit ~/.bashrc编辑~/.bashrc 文件,注意“ bashrc ” 前面有一个“ . ”,修改最后一行为export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5。
1/bin注意路径一定要写对,否则将不会有效。
如图,保存退出。
输入arm—linux—gcc –v,会出现如下信息,这说明交叉编译环境已经成功安装。
Step 3:编译链接 arm-qte-4。
7。
01) 解压包到自己制定的目录,例如 arm-qte-4.7。
02) 终端中运行。
/build-all(首先,注意不能双击运行,必须在终端中运行;其次,不使用 sudo)大约要安装2个小时当运行到出现如下提示后:cd src/tools/bootstrap/ && make -f Makefile installmake[1]:正在进入目录`/home/administrator/arm-qte-4.7。
Linux系统下的Android开发环境搭建
![Linux系统下的Android开发环境搭建](https://img.taocdn.com/s3/m/aff422cf0508763231121241.png)
Linux系统下的Android开发环境搭建1简介 (2)2版本 (2)3系统结构 (2)4开发 (4)4.1应用开发 (4)4.1.1知识准备 (4)4.1.2环境搭建 (4)4.2系统开发 (5)4.2.1知识准备 (6)4.2.2环境搭建(32位) (6)4.2.3环境搭建(64位) (8)4.2.4典型示例 (10)1简介Android(读音[ˈændrɔɪd])是Google主持开发的开源移动平台。
整个平台包括操作系统、中间件、虚拟机、应用框架、应用。
该平台最初是作为智能手机操作系统开发的,随着发展,通过移植和修改,也可用于平板电脑和其他手持设备。
2版本Android的版本周期约为6个月。
已发布(截至2010年10月)的主要版本有1.0、1.1、1.5、1.6、2.1、2.2。
● 1.0、1.1、1.5(Cupcake)、1.6(Donut)已过时,新系统不应使用;● 2.1代号Eclair,是2.0和2.01的升级版,取代后两者,稳定版;● 2.2代号Froyo,为目前最新版,不断升级中。
支持Flash,详见Android 2.2Platform Highlights;● 3.0代号Gingerbread,计划中的版本,全新的UI、游戏性能,可能支持视频聊天;● 3.5代号Honeycomb,计划中的版本,有最低硬件要求,用于平板电脑。
版本代号即提取源码时使用的分支名。
3系统结构Android结构如图:● 1:应用应用是一个个独立的程序,如浏览器、计算器、游戏等。
应用使用Java 开发,基于Android SDK 。
● 2:应用框架是一些基础组件,供上层应用所调用,可以在多个应用之间共享的功能。
包括通知、视图、资源管理等。
● 3:本地库(native )主要由C/C++库组成。
● 4:Dalvik 虚拟机与核心库Android 应用使用Java 语言开发,但并非运行于Java 虚拟机之上,而是对.java 文件进行反编译-重编译而成dex 文件,运行在Dalvik 虚拟机上。
视壮RK3399LinuxSDK编译开发环境搭建
![视壮RK3399LinuxSDK编译开发环境搭建](https://img.taocdn.com/s3/m/d7d0c1e37d1cfad6195f312b3169a4517723e51f.png)
RK3399Linux SDK编译开发环境搭建一、编译开发环境搭建1.初始化开发环境本部分内容包括如何搭建用于RK LINUX开发的本地环境。
您需要在Linux或者Mac OS环境下搭建,建议使用Ubuntu64ibt开发,如Ubuntu14.0464ibt、Ubuntu16.0464ibt 等,与我司的开发环境统一,避免出现环境问题。
2.配置一个Linux开发环境本创建步骤是基于Ubuntu LTS(14.04)版本,但是大部分发行版本必须保证所需的工具可以运行。
注意:您也可以在虚拟机中搭建环境。
如果您在虚拟机中运行Linux,您需要至少2GB的RAM/swap,或者30GB以上的磁盘空间来创建编译环境。
在Ubuntu或者MacOS下,通常您需要安装如下工具:A.Python2.6-- 2.7,您可以从下载.B.GNU Make3.81--3.82,您可以从下载.C.Git1.7or newer.您可以从下载.3.安装所需的安装包(基于Ubuntu14.04)您需要一个64位版本的Ubuntu。
注意:使用老版本Ubuntu可能会有兼容性问题。
用下面命令来安装Ubuntu所需的包:$sudo apt-get install git gnupg flex bison gperf build-essential\zip tar curl libc6-dev libncurses5-dev:i386x11proto-core-dev\libx11-dev:i386libreadline6-dev:i386libgl1-mesa-glx:i386\libgl1-mesa-dev g++-multilib mingw32cmake tofrodos\python-markdown libxml2-utils xsltproc zlib1g-dev:i386lzop$sudo ln-s/usr/lib/i386-linux-gnu/mesa/libGL.so.1/usr/lib/i386-linux-gnu/libGL.so4.安装ARM交叉编译工具链和编译内核相关软件包:$sudo apt-get install gcc-arm-linux-gnueabihf\gcc-aarch64-linux-gnu device-tree-compiler lzop libncurses5-dev\ libssl1.0.0libssl-dev二、编译1、uboot编译cd u-boot&&make rk3399_linux_defconfig&&make ARCHV=aarch64-j12&&cd..2、kernel编译cd kernel&&make ARCH=arm64rockchip_defconfig&&make ARCH=arm64rk3399-videostrong-board-mipi.img-j12&&cd..注意:rk3399-videostrong-board-edp.dts文件是配置EDP LCD文件,rk3399-videostrong-board-dulelcd.dts是双屏配置显示的文件,接口是edp and mipi3、rootfs系统及app编译cd buildroot&&make rockchip_rk3399_defconfig&&cd..&&./build_all.sh-j12&&./mkfirmware.sh4、最终固件在rockimg目录下备注:1、交叉编译环境搭建:交叉编译工具位于buildroot/output/host/usr/目录下,需要将工具的bin/目录和arm-rockchip-linux-gnueabihf/bin/目录设为环境变量。
Linux下C开发环境的搭建过程---gcc、glibc安装和升级操作方法
![Linux下C开发环境的搭建过程---gcc、glibc安装和升级操作方法](https://img.taocdn.com/s3/m/1896c67ba517866fb84ae45c3b3567ec102ddc9b.png)
Linux下C开发环境的搭建过程---gcc、glibc安装和升级操作⽅法Linux下C开发环境的搭建过程——安装gcc前⾔在Linux系统中,软件安装程序⽐较纷繁复杂,不过最常见的有两种:1)⼀种是软件的源代码,您需要⾃⼰动⼿编译它。
这种软件安装包通常是⽤gzip压缩过的tar包(后缀为.tar.gz)。
2)另⼀种是软件的可执⾏程序,你只要安装它就可以了。
这种软件安装包通常被是⼀个RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),后缀是.rpm。
Linux和C天⽣就有不解之缘,Linux操作系统的内核主要就是⽤C写的,另外Linux下的很多软件也是⽤C写的,特别是⼀些著名的服务软件,⽐如MySQL、Apache等。
初学者在编译MySQL这样的软件时,可能遇到过各式各样的错误,其实只要你初步了解了Linux的C开发环境,你就能⾃⾏解决这些错误。
Linux的C开发环境与Windows的有所不同,在Linux下,⼀个完整的C开发环境由以下三个部分组成:1、函数库:glibc要构架⼀个完整的C开发环境,Glibc是必不可少的,它是Linux下C的主要函数库。
Glibc有两种安装⽅式:A、安装成测试⽤的函数库——在编译程序时⽤不同的选项来试⽤新的函数库B、安装成主要的C函数库——所有新编译程序均⽤的函数库Glibc含⼏个附加包:LinuxThreads、locale和crypt,通常它们的⽂件名随版本不同⽽类似于下列⽂件名:glibc-2.06.tar.gzglibc-linuxthreads-2.0.6.tar.gzglibc-localedate-2.0.6.tar.gzglibc-crypt-2.0.6.tar.gz2、编译器:gccgcc(GNU CCompiler)是GNU推出的功能强⼤、性能优越的多平台编译器,gcc编译器能将C、C++语⾔源程序、汇编程序和⽬标程序编译、连接成可执⾏⽂件,以下是gcc⽀持编译的⼀些源⽂件的后缀及其解释:3、系统头⽂件:glibc_header缺少了系统头⽂件的话,很多⽤到系统功能的C程序将⽆法编译。
正点linux开发板SSH-Server环境搭建
![正点linux开发板SSH-Server环境搭建](https://img.taocdn.com/s3/m/61b5deb704a1b0717fd5dda6.png)
基于正点原子Alpha Linux 开发板ssh服务器搭建,以及IP地址静态设置。
写本文目的,方便以后能回顾下,也希望有需要的能借鉴下,写的不是很好,有不懂得地方可以留言.首先楼主在正点原子开发板自带Linux系统上经过多次尝试,搭建ssh服务器,以及静态IP地址的设置,最终还是失败告终,最终在一位热心的网友帮助下,成功搭建ssh服务器,IP地址的固定设置,废话多说,下面看搭建步骤:第一步:烧写镜像到我们的开发板中(镜像是正点提供的)具体怎么下镜像到开发板中这里不在赘述,正点官方给详细的步骤,镜像,驱动开始指南网盘可自提。
链接:https:///s/1vMbw5J0xKlrgh4ZlxbBjZw提取码:sdnp烧写步骤我们只需要看I.MX6U 嵌入式Linux驱动开发指南V1.0 第三十九章系统烧写第二步:网盘下载烧写工具,里面自带linux开发板系统镜像,因楼主开发板是emmc 版本,所以选择如下方框所示:根据自己开发板自行选择,具体每个什么意义,可在系统烧写章节有介绍,这里不在介绍第三步:系统烧写完成以后,我们还不能通过网络(必须是局域网),进行访问开发板首先查看我们电脑连接路由器的IP地址,路由器IP地址,静态配置开发地址的IP地址,必须处在同一个网段,否则后面无法进行访问,设置开发板的IP地址,通过串口,进行访问开发板(方法可参考I.MX6U 嵌入式Linux驱动开发指南V1.0)进入目录/etc/network vi interfaces 并完成如下配置IP地址根据自己的IP进行修改保存退出,reboot,重下或者 /etc/init,d/networking restartifconfig 查看下,自己的IP地址就是刚才配置的了,这里配置了网口2。
配置好以后即可通过网线连接开发板网口2与路由器连接第四步:ping 下电脑ping 就能ping 通了,但仍然无法通过有线网络,或者无线访问我们的开发板串口终端输入 sudo apt-get install openssh-server 安装ssh serversudo ps -e |grep ssh #查看是否安装成功好了,下面尝试连接我们的开发板......这是可以通过putty 工具,来尝试访问下,我们的开发板,可能会出现如下报错不要着急,有两种方法可以解决,创建用户组,或者修改ssh配置修改配置如下好了,下面我们就可以通过ssh 来控制我们的开发板了,同一网段,无线有线均可访问。
linux下使用vscode搭建C++开发环境
![linux下使用vscode搭建C++开发环境](https://img.taocdn.com/s3/m/cffefd79a88271fe910ef12d2af90242a995ab57.png)
linux下使⽤vscode搭建C++开发环境最近在linux上跑⼀些开源库做学习⽤, 顺⼿就搭了⼀下vscode的c++开发环境, 这⾥分享⼀下vscode进⾏C++开发的基本环境结构.1. ⾸先是编辑器, vscode直接官⽹下载的, 后期可以⽤ apt 直接更新, 个⼈觉得还是挺⽅便的, 有喜欢折腾的⼩伙伴可以去github上拉开源版本的下来⾃⼰编译, 这⾥不过多赘述2. 其次是编译器, 我使⽤的是GNU编译器g++, ⽣成脚本我选择了makefile以上是基础⼯具, 如果把vscode换成vim + shell脚本, 调试直接gdb的话, 就基本上是原⽣环境开发了接下来就是开发环境的搭建了, 这⾥我先整理⼀下⼀个⼯程量稍微⼤⼀些的项⽬所应该包含的项⽬种类, 再根据整理的结果给出⼀个我写的例⼦, 之后再对该例进⾏不断完善对于⼀个⼤型⼯程来说, 可能⾄少会包含以下⼏种不同的⼯程:1. 可执⾏程序 : 即项⽬主要的⽬标2. 静态库 : 集成⼀些基础的⼯具函数和⼀些基础功能的封装3. 动态库 : 作为插件, ⾮核⼼功能之类的东西4. 资源⽂件 : 各种图⽚, ⽂件, ⾳频, xml等等以上是我认为的⼀个⼯程量稍⼤的程序可能会包含的项⽬种类, 根据上⾯这四类, 我构建了如下的⽂件结构 :.├── debug├── lib├── project│├── debug.makefile│├── exe_test││├── compile││├── .d││├── header│││└── test.h││├── makefile││└── src││└── test.cpp│├── lib_a││├── compile││├── .d││├── header│││├── a_1st.h│││├── a_2nd.h│││└── a_3rd.h││├── makefile││└── src││├── a_1st.cpp││├── a_2nd.cpp││└── a_3rd.cpp│├── lib_so││├── compile││├── .d││├── header│││├── so_1st.h│││├── so_2nd.h│││└── so_3rd.h││├── makefile││└── src││├── so_1st.cpp││├── so_2nd.cpp││└── so_3rd.cpp│└── makefile├── release└── .vscode├── c_cpp_properties.json├── launch.json├── settings.json└── tasks.json20 directories, 23 files在当前项⽬⽬录下共有4个⼦⽬录和⼀个vscode专⽤的隐藏⽬录 :1. debug : 所有我们⽣成的debug版本的可执⾏程序以及debug版本程序所需的资源都会⽣成在这个⽬录中2. release : 同上, 但可执⾏程序和资源⽂件都是release版的3. lib : 所有动态库, 静态库会⽣成在这个⽬录中, debug版和release版⽤⽂件名结尾是否带 D 来区分4. project : 所有当前项⽬相关的⼯程都在这个⽬录中5. .vscode : vscode专⽤⽬录, 其中包含了当前项⽬相关的vscode配置信息下⾯再看⼀下project⽬录, 该⽬录下共有3个项⽬⽬录和两个makefile :1. lib_a : 该项⽬最终会⽣成⼀个静态库供程序使⽤2. lib_so : 该项⽬最终会⽣成⼀个动态库供程序使⽤3. exe_test : 该项⽬最终会⽣成⼀个可执⾏程序, 该程序会使⽤到上述静态库和动态库4. 两个makefile⽤于控制所有项⽬的debug版, release版⽣成最后再解析⼀下每⼀个项⽬⽬录, 每个项⽬都包含了4个⼦⽬录和⼀个makefile :1. src : 所有的源⽂件放置在该⽬录中2. header : 所有的头⽂件放置在该⽬录中3. compile : 编译后的.o⽂件会在这个⽬录中⽣成4. .d : 该⽬录⽤于存放每个源⽂件的依赖关系5. makefile : 该makefile控制当前项⽬的⽣成以上是例⼦⽂件结构的⼤概说明, 下⾯我们就这个例⼦进⾏完善, 针对每⼀个⼯程和整个项⽬, 编写makefile, 完成代码的编译⽣成⾸先针对整个项⽬, 我们要⽣成每⼀个⼯程, 并保证⼯程的⽣成顺序符合每个⼯程间的依赖关系这⾥先看⼀下project/makefile, 这个makefile⽤于⽣成所有⼯程release版本1 export BUILD_VER := RELEASE2 export CXXFLAGS := -Wall -std=c++113 export RM := rm -f45 .PHONY:build_all clean_all clean_all_cache67 build_all:8 cd ./lib_so && make9 cd ./lib_a && make10 cd ./exe_test && make1112 clean_all:13 cd ./lib_so && make clean14 cd ./lib_a && make clean15 cd ./exe_test && make clean1617 clean_all_cache:18 cd ./lib_so && make clean_cache19 cd ./lib_a && make clean_cache20 cd ./exe_test && make clean_cache该makefile⾸先会覆写3个变量, 并将变量导出成为全局变量, 其中BUILD_VER⽤于控制⽣成程序的版本, 紧随其后的是3个伪⽬标, 分别⽤于⽣成每个⼯程, 清理所有⽣成⽂件以及清理⽣成过程中的产⽣的.o和.d接下来再来看project/debug.makefile, 这个makefile⽤于⽣成所有⼯程的debug版本1 include ./makefile23 BUILD_VER := DEBUG该makefile引⼊release版的makefile, 并修改BUILD_VER为DEBUG, 该makefile名称不是make能够⾃动识别的名称, 使⽤需要加上 -f 参数,如 : make -f debug.makefile通过上⾯两个makefile, 我们基本完成了对代码⽣成的版本控制和整个项⽬的⽣成流程, 下⾯只需要针对每⼀个⼯程, 编写对应的makefile即可下⾯是3个⼯程的makefile :⾸先是静态库⼯程lib_a1 vpath %.cpp ./src2 vpath %.h ./header34 .PHONY: all clean clean_cache5 all : # 默认⽬标67 CXXINCLUDES = -I ./header8 ARFLAGS = -rcs9 SRCS_WITH_PATH = $(wildcard ./src/*.cpp)10 SRCS = $(SRCS_WITH_PATH:./src/%.cpp=%.cpp)11 DEPS = $(SRCS:.cpp=.d)12 DEPS_WITH_PATH = $(SRCS:%.cpp=./.d/%.d)13 OBJS = $(SRCS:.cpp=.o)14 OBJS_WITH_PATH = $(SRCS:%.cpp=./compile/%.o)15 TARGET_NAME = tsi.a16 OUTDIR = ../../lib/1718 ifeq ($(BUILD_VER), DEBUG)19 CXXFLAGS += -g320 TARGET_NAME := tsiD.a21 endif2223 ifeq ($(BUILD_VER), RELEASE)24 CXXFLAGS += -O225 endif2627 #⽣成依赖关系,保证修改.h时也会重新编译相关.cpp28 -include $(DEPS)2930 %.d:$(SRCS)31 @set -e;\32 $(RM) $@;\33 $(CXX) $(CXXINCLUDES) -MM $< > .d/$@;3435 %.o:%.cpp36 $(CXX) $(CXXFLAGS) $(CXXINCLUDES) -c $< -o ./compile/$@3738all:$(TARGET_NAME)3940 $(TARGET_NAME):$(OBJS)41 $(AR) $(ARFLAGS) $(OUTDIR)$(TARGET_NAME) $(OBJS_WITH_PATH)4243clean:44 $(RM) $(OUTDIR)$(TARGET_NAME) $(OBJS_WITH_PATH) $(DEPS_WITH_PATH)4546clean_cache:47 $(RM) $(OBJS_WITH_PATH) $(DEPS_WITH_PATH)makefile中⾸先读取了当前⼯程下的两个⽬录, 保证正确搜索.h和.cpp之后声明三个伪⽬标, 并以all为终极⽬标, 之后声明了⼀系列变量, 这⾥详细解释⼀下每⼀个变量, 跟⼤家解释⼀下我的思路CXXINCLUDES : 该变量包含了⽣成时c++的包含⽬录ARFLAGS : 静态库打包标志SRCS_WITH_PATH : 包含路径的所有源⽂件, 该写法可以⾃动匹配指定⽬录下的所有.cpp, ⼤型⼯程中可能会有很多源⽂件, 每次更新删除都要修改makefile的话会很不⽅便SRCS : 剔除所有源⽂件的前缀路径DEPS : 对每⼀个源⽂件, ⽣成⼀个对应的写有依赖关系的.d⽂件DEPS_WITH_PATH : 包含前缀路径的全部.d⽂件OBJS : 源⽂件编译⽣成的全部.o⽂件OBJS_WITH_PATH : 包含前缀路径的全部.o⽂件TARGET_NAME : ⽣成⽬标的名称OUTDIR : 输出⽬录在声明了以上这些变量之后, 通过对全局变量BUILD_VER的值的判断, 在CXXFLAGS⾥添加不同的参数以控制版本, 并对⽂件名等信息做修改接下来我⽤-include让当前makefile读取所有.d依赖关系, 当前⽂件由于没有找到这些.d⽂件, 会在⽂件中搜索有⽆⽣成的静态⽬标, 这时, make会搜索到下⽅的%.d:$(SRCS)根据该静态⽬标, .d⽂件便会被⽣成出来并被加载假设我们当前指明⽣成的是伪⽬标allall所依赖的⽬标是我们指定的⽂件名$(TARGET_NAME), 该变量所指向的⽬标⼜依赖于所有的.o⽂件, 由于.o⽂件没有被⽣成, make⼜会搜索并调⽤静态⽬标%.o:%.cpp进⾏.o⽂件的⽣成在⽣成完所有的.o⽂件之后, ⽬标$(TARGET_NAME)才会被执⾏, 最终在../../lib⽬录中⽣成tsi.a或tsiD.a理解了上⾯的内容之后, 接下来两个⼯程 : 动态库以及可执⾏⽂件的makefile基本也可以套⽤上⾯的内容再进⾏修改得到, 这⾥我贴出我的写法供⼤家参考动态库makefile1 vpath %.cpp ./src2 vpath %.h ./header34 .PHONY: all clean clean_cache5 all : # 默认⽬标67 CXXFLAGS += -fPIC8 CXXINCLUDES = -I ./header9 SRCS_WITH_PATH = $(wildcard ./src/*.cpp)10 SRCS = $(SRCS_WITH_PATH:./src/%.cpp=%.cpp)11 DEPS = $(SRCS:.cpp=.d)12 DEPS_WITH_PATH = $(SRCS:%.cpp=./.d/%.d)13 OBJS = $(SRCS:.cpp=.o)14 OBJS_WITH_PATH = $(SRCS:%.cpp=./compile/%.o)15 TARGET_NAME = libtest.so16 OUTDIR = ../../lib/1718 ifeq ($(BUILD_VER), DEBUG)19 CXXFLAGS += -g320 TARGET_NAME := libtestD.so21 endif2223 ifeq ($(BUILD_VER), RELEASE)24 CXXFLAGS += -O225 endif2627 #⽣成依赖关系,保证修改.h时也会重新编译相关.cpp28 -include $(DEPS)2930 %.d:$(SRCS)31 @set -e;\32 $(RM) $@;\33 $(CXX) $(CXXINCLUDES) -MM $< > .d/$@;3435 %.o:%.cpp36 $(CXX) $(CXXFLAGS) $(CXXINCLUDES) -c $< -o ./compile/$@3738all:$(TARGET_NAME)3940 $(TARGET_NAME):$(OBJS)41 $(CXX) -shared -o $(OUTDIR)$(TARGET_NAME) $(OBJS_WITH_PATH)4243clean:44 $(RM) $(OUTDIR)$(TARGET_NAME) $(OBJS_WITH_PATH) $(DEPS_WITH_PATH)4546clean_cache:47 $(RM) $(OBJS_WITH_PATH) $(DEPS_WITH_PATH)可执⾏程序makefile1 vpath %.cpp ./src2 vpath %.h ./header34 .PHONY: all clean clean_cache5 all : # 默认⽬标67 CXXINCLUDES = -I ./header -I ../lib_a/header -I ../lib_so/header8 SRCS_WITH_PATH = $(wildcard ./src/*.cpp)9 SRCS = $(SRCS_WITH_PATH:./src/%.cpp=%.cpp)10 DEPS = $(SRCS:.cpp=.d)11 DEPS_WITH_PATH = $(SRCS:%.cpp=./.d/%.d)12 OBJS = $(SRCS:.cpp=.o)13 OBJS_WITH_PATH = $(SRCS:%.cpp=./compile/%.o)14 LINK_LIB = ../../lib/tsi.a15 LINK_USR_SO = -L ../../lib -Wl,-rpath=../lib -ltest16 TARGET_NAME = test17 OUTDIR = ../../release/1819 ifeq ($(BUILD_VER), DEBUG)20 CXXFLAGS += -g321 LINK_LIB := ../../lib/tsiD.a22 LINK_USR_SO := -L ../../lib -Wl,-rpath=../lib -ltestD23 TARGET_NAME := testD24 OUTDIR := ../../debug/25 endif2627 ifeq ($(BUILD_VER), RELEASE)28 CXXFLAGS += -O229 endif3031 #⽣成依赖关系,保证修改.h时也会重新编译相关.cpp32 -include $(DEPS)3334 %.d:$(SRCS)35 @set -e;\36 $(RM) $@;\37 $(CXX) $(CXXINCLUDES) -MM $< > .d/$@;3839 %.o:%.cpp40 $(CXX) $(CXXFLAGS) $(CXXINCLUDES) -c $< -o ./compile/$@4142all:$(TARGET_NAME)4344 $(TARGET_NAME):$(OBJS)45 $(CXX) -o $(OUTDIR)$(TARGET_NAME) $(OBJS_WITH_PATH) $(LINK_LIB) $(LINK_USR_SO)4647clean:48 $(RM) $(OUTDIR)$(TARGET_NAME) $(OBJS_WITH_PATH) $(DEPS_WITH_PATH)4950clean_cache:51 $(RM) $(OBJS_WITH_PATH) $(DEPS_WITH_PATH)这⾥有⼏点需要注意的是, 在可执⾏程序链接时, 我⽤-Wl,-rpath指定了程序执⾏时回去何处寻找libtest.so这个动态库, 如果不想这样写, 需要指定动态库⽣成到系统默认加载的路径中去, ⽐如/usr/lib, 同样程序在其他机器上部署时也需要做同样的操作另外就是关于.d依赖⽣成我使⽤的参数是-MM, 因为GNU编译器如果使⽤-M参数会⾃动加⼊⼀些其它的依赖关系, 具体内容可以⽤g++ -M xxx.cpp做简单验证, 如下图:-MM:-M(后⾯还有....):在完成了上述步骤之后, 我们的项⽬其实已经可以正常编译⽣成执⾏了, 只是跟vscode没什么联系, 这⾥我们先在project⽬录中运⾏make, make clean_all, make, make clean_all_cache来看⼀下⾟苦编写makefile的成果很成功, 舒服了接下来, 为了做到⼀键运⾏(F5)或者⼀键debug调试, 我们要对vscode进⾏项⽬配置, 这⾥我们要修改.vscode⽬录下的三个⽂件:launch.json task.json c_cpp_properties.json在此之前先贴⼀下我在vscode中安装的插件, 这些插件能让开发环境更美观, 代码编写更顺畅其中C/C++提供了只能⾼亮头⽂件查找等功能, Chinese是⼀些选项的汉化, Font Switcher可以快速更换字体(这个⽆所谓...), One Dark Pro是⼀款⽐较美观的主题配⾊, Python(个⼈需求, 写⼀些简单的脚本还是很⽅便的), TabOut可以针对各种括号按tab快速跳出, vscode-icons美化各种图标下⾯到了vscode的启动配置, 在vscode的运⾏选项卡中, 我们可以选择当前项⽬启动的配置, 该配置集由launch.json来控制, 这⾥我先贴出我的launch.json, 再进⾏详细说明1 {2 "configurations": [3 {4 "name": "run release",5 "type": "cppdbg",6 "request": "launch",7 "program": "${workspaceFolder}/release/test",8 "args": ["-r", "-debug"],9 "stopAtEntry": false,10 "cwd": "${workspaceFolder}/release",11 "environment": [],12 "externalConsole": false,13 "MIMode": "gdb",14 "setupCommands": [15 {16 "description": "为 gdb 启⽤整齐打印",17 "text": "-enable-pretty-printing",18 "ignoreFailures": true19 }20 ],21 "preLaunchTask": "make release"22 },23 {24 "name": "run debug",25 "type": "cppdbg",26 "request": "launch",27 "program": "${workspaceFolder}/debug/testD",28 "args": ["-r", "-debug"],29 "stopAtEntry": true,30 "cwd": "${workspaceFolder}/debug",31 "environment": [],32 "externalConsole": false,33 "MIMode": "gdb",34 "setupCommands": [35 {36 "description": "为 gdb 启⽤整齐打印",37 "text": "-enable-pretty-printing",38 "ignoreFailures": true39 }40 ],41 "preLaunchTask": "make debug"42 }43 ]44}这⾥我配置了两个启动选项, ⼀个直接运⾏release程序, 另⼀个运⾏debug程序, 这⾥针对debug启动项进⾏解释说明name : 我们在启动选项卡⾥看到的启动项名称type : cppdbg就可以, 具体可以查阅vscode官⽅说明request : 启动项类型, ⼀种是附加程序⼀种是直接启动, 这⾥是直接启动program : 启动程序路径, 在vscode⾥打开的根⽬录即为${workspaceFolder}, 后⾯加上release路径args : 传⼊程序的参数stopAtEntry : 程序是否⾃动在⼊⼝暂停, debug版才有⽤哦cwd : 程序运⾏时的⽬录environment :要添加到程序环境中的环境变量, 具体可以查阅vscode官⽅说明, 这⾥我直接没填externalConsole : 选择程序是在新的控制台中启动还是在集成控制台启动MIMode : 调试器选择setupCommands : vscode官⽅⽂档查, 这⾥我是直接⽤默认配置的preLaunchTask : 这个是最重要的选项了, 该选项指明了在运⾏当前选项卡之前要运⾏的task任务, 这个task任务配置在同⽬录下的tasks.json 中, 这⾥填的内容是task的label为了解释preLaunchTask这个选项, 我们引⼊tasks.json, 这⾥贴出我的tasks.json, 进⾏说明1 {2 "version": "2.0.0",3 "tasks": [4 {5 "type": "shell",6 "label": "make release",7 "command": "make",8 "args": [],9 "options": {10 "cwd": "${workspaceFolder}/project"11 },12 "group": "build"13 },14 {15 "type": "shell",16 "label": "make debug",17 "command": "make -f debug.makefile",18 "args": [],19 "options": {20 "cwd": "${workspaceFolder}/project"21 },22 "group": "build"23 },24 {25 "type": "shell",26 "label": "make clean",27 "command": "make",28 "args": ["clean_all"],29 "options": {30 "cwd": "${workspaceFolder}/project"31 },32 "group": "build"33 },34 {35 "type": "shell",36 "label": "make clean debug",37 "command": "make -f debug.makefile",38 "args": ["clean_all"],39 "options": {40 "cwd": "${workspaceFolder}/project"41 },42 "group": "build"43 },44 {45 "type": "shell",46 "label": "make clean cache",47 "command": "make",48 "args": ["clean_all_cache"],49 "options": {50 "cwd": "${workspaceFolder}/project"51 },52 "group": "build"53 }54 ]55}在这个⽂件中我配置了5个task, 其中前2个task : make release 和 make debug⽤于执⾏不同的makefile这⾥我针对make debug做个简单说明type : task的类型, 这⾥填shell相当于执⾏shell命令label : task的名字command : 要执⾏的指令, 这⾥要注意 make -f xxx.file这种命令, -f xxx这个内容要直接写到命令内容中, ⽽不能写到下⾯的args⾥, 会⽆法识别, 这⾥⼤家可以⾃⾏验证⼀下args : command要附加的参数options : 其他选项cwd : task执⾏的⽬录group : task的分组, 可以查⼀下vscode官⽅说明经过以上配置, vscode就和我们的makefile联系在⼀起了, 选好启动项f5就完事了, 这⾥我贴出我的test.cpp, test.h, 和vscode断点调试运⾏截图 1 #include "test.h"23int main(int argc, char* argv[])4 {5if (argc > 0)6 {7 std::cout << "input param : ";8for (int idx = 0; idx < argc; ++idx)9 {10 std::cout << argv[idx] << "";11 }12 std::cout << std::endl;13 }1415 std::cout << std::endl << "using a" << std::endl;16 std::cout << tsi::a1st::lib_name() << std::endl17 << tsi::a2nd::lib_author() << std::endl18 << tsi::a3rd::lib_version() << std::endl;1920 std::cout << std::endl << "using so" << std::endl;21 std::cout << tsi::so1st::lib_name() << std::endl22 << tsi::so2nd::lib_author() << std::endl23 << tsi::so3rd::lib_version() << std::endl;24return0;25 }1 #ifndef _TSI_TEST_2#define _TSI_TEST_34 #include <iostream>56 #include "a_1st.h"7 #include "a_2nd.h"8 #include "a_3rd.h"9 #include "so_1st.h"10 #include "so_2nd.h"11 #include "so_3rd.h"1213#endif这样, ⼀个简单的项⽬⼯程的开发环境就搭建成功了. PS: 在调试时, 我遇到了⼀个⼩问题, 这⾥也贴⼀下这⾥⼀开始我⽆法进⾏gdb调试, 提⽰⽆法读取⽂件云云, 点击创建后, 有了上述提⽰, 在⽹上检索了⼀下, 只有解决⽅案, 没有详细解释其中机理, 这⾥我先贴出解决办法在/⽬录下建⽴build⽬录,在该⽬录中建⽴错误提⽰中对应的⽬录, 并下载提⽰对应版本glibc到⽬录中并解压即可解决问题关于该错误我认为是gdb调试加载路径错误导致, 如果有了解详细原因的朋友, 请务必留⾔指点, 在此谢过以上, 上⽅⽰例只是⼀个简单的项⽬结构, 其中⼀定还有很多不⾜之处, 本⽂仅起到⼀个抛砖引⽟的作⽤, 如有错误疏漏, 请务必指出, 有问题欢迎讨论, 转载注明出处, 感谢。
Linux系统 OA环境搭建
![Linux系统 OA环境搭建](https://img.taocdn.com/s3/m/f278395930b765ce0508763231126edb6f1a76db.png)
软件结构:B/S 浏览器/服务器开发语言:javaweb服务器:tomcat数据库服务器:mysql(mariadb)操作系统:Linux一、安装JDK(java程序运行环境)1、查看当前系统JDK安装情况2、卸载已安装的JDK3、安装JDK(使用rpm方式安装)1)JDK的rpm包在安装linux系统时的镜像文件中,加载镜像文件2)将镜像文件挂载到/mnt目录下3)进入安装包目录,找到安装包4)安装JDK先安装jpackage-utils软件安装java-1.8.0-openjdk-headless-1.8.0.222.b03-1.el7.x86_64.rpm安装java-1.8.0-openjdk-1.8.0.222.b03-1.el7.x86_64.rpm安装java-1.8.0-openjdk-devel-1.8.0.222.b03-1.el7.x86_64.rpm5)查看JDK安装情况二、安装web服务器(安装tomcat)1、从Windows系统中上传tomcat压缩包,使用rz命令上传到Linux中的/root目录下(上传路径可以自定义)2、上传完成后,将tomcat解压解压后添加执行权限启动tomcat3、在Windows打开浏览器,输入地址:http://虚拟机IP:8080访问,访问前先关闭Linux 系统的防火墙三、配置OA1、将OA压缩文件上传到Linux系统中,上传到/root目录下2、解压oa文件3、将解压后得到的cwoa2.0目录中的oa目录复制到tomcat中的webapps目录下去4、在Windows浏览器中输入http://虚拟机IP:8080/oa/setup导入OA数据,数据存入路径为oa/setup/redmoonoa.sql四、安装数据库启动数据库。
计算机操作系统实验指导linux版王红玲源码
![计算机操作系统实验指导linux版王红玲源码](https://img.taocdn.com/s3/m/7cf2a12658eef8c75fbfc77da26925c52cc5919d.png)
计算机操作系统实验指导linux版王红玲源码计算机操作系统实验指导(Linux版)导言:计算机操作系统是计算机系统中最重要的软件之一,负责管理计算机系统的硬件和软件资源,并为用户提供良好的使用环境。
为了帮助学生更好地理解操作系统的原理和实现,我们开设计算机操作系统实验课程,并提供一份针对Linux操作系统的实验指导。
本实验指导旨在帮助学生通过实际编程来探索和理解操作系统的原理和实现方式。
通过完成本实验,学生将能够熟悉Linux操作系统的基本功能和原理,并学会使用Linux的命令行界面和Shell编程。
同时,本实验还将引导学生通过源代码的阅读和分析,深入理解操作系统内部的工作原理。
实验一:Linux环境搭建在开始实验之前,我们首先需要搭建一个适合的Linux开发环境。
学生可以选择在个人电脑上安装Linux发行版,如Ubuntu或Fedora,也可以使用虚拟机软件,如VirtualBox或VMware,在Windows或Mac OS上安装Linux虚拟机。
实验二:Linux基本操作和Shell编程在本实验中,学生将通过完成一系列实际任务来熟悉Linux的基本操作和Shell编程。
任务包括使用命令行界面进行文件和目录操作、执行Shell脚本、配置系统环境等。
学生需要按照指导完成每个任务,并理解每个任务的目的和原理。
实验三:Linux系统调用和进程管理在本实验中,学生将学习和实现Linux系统调用和进程管理的功能。
学生需要阅读和分析Linux内核源代码中与系统调用和进程管理相关的部分,并完成一系列与之相关的实验任务。
任务包括编写和调试系统调用、创建和管理进程、实现进程间通信等。
实验四:Linux内存管理和文件系统在本实验中,学生将学习和实现Linux内存管理和文件系统的功能。
学生需要阅读和分析Linux内核源代码中与内存管理和文件系统相关的部分,并完成一系列与之相关的实验任务。
任务包括实现内存分配算法、设计和实现文件系统、调试和优化内存和文件系统的性能等。
配置EDK2的Linux 开发环境
![配置EDK2的Linux 开发环境](https://img.taocdn.com/s3/m/6fb4917baf1ffc4ffe47ac98.png)
配置EDK2的Linux 开发环境1配置Linux 开发环境与配置Windows开发环境相似,配置Linux开发环境也包括如下步骤。
1)安装gcc编译器,并下载EDK2源码。
2)配置EDK2,包括编译EDK2工具链和设置编译器路径。
在配置Windows开发环境时,我们没有编译EDK2工具链,因为EDK2源码包中包含了Windows下的EDK2工具链可执行文件。
但是,由于Linux发行版众多,因此,EDK2源码包中没有包含EDK2工具链可执行文件。
然后就可以通过EDK2提供的源码和工具开发UEFI应用和驱动了。
3)编译UEFI模拟器和UEFI工程。
4)运行UEFI模拟器。
下面详细介绍配置Linux开发环境的这几个步骤。
1.1安装所需开发工具1)安装gcc:在Ubuntu下可以使用如下命令安装gcc。
1.EDK2:$apt-get install gcc2)下载EDK2开发包。
①?可以从TianoCore官方网站下载EDK2发行版:1.https:///projects/edk2/f?iles/UDK2014_Releases/UDK2014/UDK2014.Complete.MyWorkSpace.zip/download②也可以用代码管理工具获得最新源码。
3)用subversion命令行获得EDK2源码:1.EDK2:$svn co https:///p/edk2/code/trunk/edk2edk2或用git命令行下载源码:1.EDK2:$git clone https:///tianocore/edk21.2配置EDK2开发环境1)编辑Conf/target.txt。
根据用户的编译器环境修改编译工具TOOL_CHAIN_TAG。
此处以gcc 4.4为例,需设置TOOL_CHAIN_TAG=GCC44,如下图所示。
2)检查Conf\tools_def.txt(见图2-9),确保编译器路径正确。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
all_squash
论登录 NFS 主机的使用者身份为何,都会被压缩成为匿名使用者,通常 也就是 nobody
4.3、安装配置服务 4.3.1、NFS 服务
NFS(Network File System)就是网络文件系统,允许系统在网络上与其他系统共享 目录和文件。通过使用 NFS,用户和程序可以象访问本地文件一样访问远端系统上的文件, 这也是 Linux 主机向嵌入式 Linux 系统上传数据的一种常用方式。其关系图如下:
NFS 本身仅仅是一种文件系统,本身没有传输功能,是基于 RPC 协议实现的。安装 NFS 服务后才能实现文件目录的共享。在 ubuntu9.10 下,安装方法见图 4-12。
键入“y”后即可安装完成。注意:要能够上网,不然没有安装包,就无法安装了。 现在还得配置 NFS 服务器端,主要是设置被共享的目录,这些共享目录可以有多个。 Ubuntu 下,修改/etc/exports 文件,添加内容如下:
只读的权限
no_root_squash
登录 NFS 主机读写共享目录的如果是 root 的话,那么对于该目录来说, 就具有 root 的权限
root_squash
登录 NFS 主机读写共享目录的如果是 root 的话,那么该 root 的权限将 被压缩成为匿名使用者,通常其 UID 与 GID 都会变成 nobody 那个身份
4.2、超级终端 4.2.1、什么是超级终端
在 2.2.1.4(Linux 启动过程)一节中已经提到过,串口是 Linux 内核和用户交互的方 式之一,是系统的调试端口。本文所指的超级终端就是安装在主机上的一个通用串行交互软 件,可以通过超级终端与嵌入式 Linux 系统交互,使超级终端成为嵌入式 Linux 系统的“显 示器”。超级终端应该完成的任务如下:
图 4-1
再编写一个测试程序 test.c 来测试下交叉编译环境是否搭建成功,内容如下: #include <stdio.h> int main(void) {
printf("Hello arm gcc.\n"); return 0; } 编译 test.c,并用 file 查看可执行程序的格式信息: # arm-linux-gcc -o test test.c # file test test: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped
第四章、开发环境搭建
本章目标 9 熟悉搭建交叉编译环境 9 熟悉安装配置 Linux 下的 minicom 9 熟悉创建配置 Windows 下的超级终端 9 熟悉安装配置 NFS、TFTP 服务
本章目录 4.1、搭建交叉编译环境
4.1.1、概述 4.1.2、安装 4.2、超级终端 4.2.1、什么是超级终端 4.2.2、安装配置 Linux 下的 minicom 4.2.3、配置 Windows 下的超级终端 4.3、安装配置服务 4.3.1、NFS 服务 4.3.2、TFTP 服务
/home/nfsdir *(rw,sync,no_root_squash)
格式说明:
共享目录 ip 地址(权限)
其中,“/home/nfsdir”就是共享目录,ip 地址就是允许登录 NFS 主机的 ip 地址,如
果是*则表示不限制 ip 地址。
常用权限参数说明见下表:
参数
意义
rw
可读写的权限
ro
然后就是设置串口参数(如图 4-9 所示),这些参数不能错。确定退出,“超级终端”就 设置好了。退出的时候保存下(如图 4-10 所示),就不用每次都设置了。
如果需要重新设置串口参数,可以点击菜单“文件”中的“属性”,如图 4-11 所示,点
击图左边窗口中的配置,出现右边的窗口,就可以进行设置了。
第一次使用“超级终端”时,可能会要求输入连接电话,只需要在区号栏随便输入一个 号码就行了,如图-8 所示,这里输入的是“0792”。
首先会பைடு நூலகம்求一个连接描述,就是输入一个名称,如图 4-7 所示。随便写一个名称即可。
然后就是选择通讯方式,在“连接时使用”处选择串口号(如图 4-8 所示)。如果有多 个串口的话,得对应到要使用的串口。
Linux 主机 共享目录
目标机(嵌入式 Linux 系统)
NFS
挂载目录
Linux 主机开启了 NFS 服务,向其共享目录中拷贝数据,则支持 NFS 的目标机(嵌入式 Linux 系统)的对应挂载目录就可以看到刚才拷贝的数据。在 4.1.1 一节中曾提到,目标机 中一般没有编译环境,为目标机提供应用程序就是一个问题。如果主机和目标机都支持 NFS 的话,可以先在主机上编译好程序,再上传到目标机中。
验证配置 可以使用如下指令检查环境变量是否配置成功: # echo $PATH
修改其他的脚本文件方法类似,只是注意其影响是否覆盖到登录账户。 测试
环境变量配置好了,查看下 arm-linux-gcc 的版本信息,在终端中输入: # arm-linux-gcc -v 在 ubuntu9.10 系统下得到图 4-1 所示的信息。
接收目标机的系统启动信息、过程信息等,并显示出来; 向目标机发送信息(如命令),同时接收需要显示的信息(如命令的响应)。 常用的超级终端软件有 Windows 自带的超级终端和 Linux 下的 minicom。 4.2.2、安装配置 Linux 下的 minicom 安装 minicom 有两种方式:安装二进制安装包和手工编译源码包。一般建议直接安装二 进制包,即使是手工编译源码包,最好也在 Linux 发行版的官网下载,这样可以避免编译出 现问题,或是编译出来的 minicom 使用出现问题。 在以 root 账户登录到 ubuntu9.10,执行如下命令: # apt-get install minicom 然后开始配置 minicom,在终端中输入: # minicom -s
在图 4-3 中 G、F 对应的是软/硬流控,按“G”、“F”后,就改变它们的开关状态,“Yes” 表示打开,“No”表示关闭。一般流控是要关闭的。
串口设置好后,可以保存为缺省设置,即在主菜单(图 4-2)中,用上下方向键选到“Save setup as dfl”后回车。也可以保存到指定配置文件,即用上下方向键选到“Save setup as..” 后回车,输入配置文件名后回车。使用缺省配置进入 minicom 时,在终端中执行:
打开文件 # vi /etc/bash.bashrc
修改文件 在最后加上一行,添加如下内容: export PATH=$PATH:/usr/local/arm/4.3.2/bin
设置生效 如果要使新的环境变量立即生效,而不用重启电脑,则执行如下命令: # source /etc/bash.bashrc
4.1、搭建交叉编译环境 4.1.1、概述
交叉编译,就是用运行在一种计算机环境中的编译程序,去编译出在另外一种环境下运 行的代码。具有这种能力的编译器就叫交叉编译器。换而言之,就是在一个平台上生成另一 个平台上的可执行代码。这里所指的平台实际上包含了软/硬件两个方面的概念:操作系统 (Operating System)和体系结构(Architecture)。同样是 Linux 系统,在不同体系结构 的硬件平台上的可执行代码是不同的,譬如 ARM 和 x86,因为它们的指令系统不一样,所以 可执行代码也就有差异。同样是 ARM 平台,由于操作系统的实现不一样,可执行代码也会不 一样。
以 root 账户登录系统,把 arm-linux-gcc-4.3.2.tgz 拷贝到根目录下,然后解压, 执行命令如下:
# tar -zxvf arm-linux-gcc-4.3.2.tgz 配置系统环境变量
交叉编译工具链安装好了以后,最好先配置系统环境变量,把其所在的路径加入进 PATH,这样就能在任何目录下方便的使用。通常,要修改环境变量,可以修改以下三个 脚本中的一个:全局(公有)配置脚本/etc/profile,所有用户登录时都要执行;Shell 初始化脚本/etc/bash.bashrc,也是所有用户登录时执行的;root 账户目录下的 Shell 配置脚本/root/.bashrc(换成其他账户的话,就在其工作目录下去找),仅仅是 root 账号登录时执行的。推荐修改/etc/bash.bashrc 文件,方法如下:
# minicom 使用指定配置文件的时候,执行: # minicom configuration 其中 configuration 表示指定,其对应的配置文件名为 minirc.configuration,它和 缺省配置文件 minirc.dfl 都保存在/etc/minicom 目录下。 要退出 minicom,可以直接关闭终端,也可以同时按下“Ctrl”、“A”(或“Z”)键,然 后再按“Q”键,就可以看到图 4-6 的界面,用方向键选择“Yes”就退出 minicom 了。
如图 4-2 所示,用上、下方向键(键盘上的“↑”、“↓”)来选择菜单,选中“Serial port setup”后按回车,进入到串口配置菜单(如图 4-3)。
按“A”键后,修改串口设备名。修改好后,按“ESC”键退到图 4-3 所示的配置菜单。
在图 4-3 所示的串口配置菜单下,按“E”,进入修改串口参数菜单(图 4-4)。串口参 数有波特率(Speed)、校验方式(Parity)、数据位(Data)和停止位(Stopbits),要把这 些参数修改成指定的值。只需要按图 4-4 所示中的字母键,就修改了对应参数的相应值。修 改好后按“Esc”键退到上一级菜单,即图 4-3 所示的串口配置菜单。
4.2.3、配置 Windows 下的超级终端 Windows 有自带的超级终端软件,名字就叫“超级终端”。单击任务栏上的“开始”菜