linux交叉开发环境搭建

linux交叉开发环境搭建

因为此次需要在linux上面进行调试,所以需要搭建系统。我的想法是:主机是linux的ubuntu16-64,然后在主机上面安装mware虚拟机,然后在虚拟机里面再次安装ubuntu16-64。

[TOC]

1.安装宿主机ubuntu16-64

安装宿主机linux应该很简单,但也有注意的地方。我想了想,主要有三点。

  1. 如果是双系统,安装类型时得选择其它,他能让你很好的掌控硬盘分区。

  2. 如果是双系统,得注意选择安装启动引导器的设备,选择为boot目录所在的分区。然后,安装好以后,通过easyBCD把启动项放在表里。

  3. 注意分区,主要有:

/根目录和swap交换分区,这是必须的;

/boot目录,用于启动操作系统linux的;

/usr目录,用于放置用户程序的;

/home目录,用于用户工作空间。

2.安装宿主机的中文字体

  1. 先安装语言包

System Settings–>Language Support–>Install/Remove Languages选中chinese,点击Apply应用即可,等待下载安装完成。

  1. 安装ibus框架

sudo apt-get install ibus ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4

  1. 启动ibus框架

im-config -s ibus

  1. 安装拼音引擎

sudo apt-get install ibus-pinyin

安装完之后需重启机器

  1. 设置快捷切换

使用text entry set

3.安装虚拟机vmware

  1. 用apt-get命令更新系统

sudo apt-get update

sudo apt-get upgrade

  1. 从vmware官网下载适合linux的虚拟机版本。

  2. 在脚本包上设置执行命令

chmod a+x VMware-Workstation-Full-11.0.0-2305329.x86_64.bundle

  1. 执行脚本开始安装

sudo ./VMware-Workstation-Full-11.0.0-2305329.x86_64.bundle

  1. 接下来就可以进入可视化界面,输入密钥,即可。

4.虚拟机中安装ubuntu16-64作为目标机

虚拟机中安装ubuntu就更简单了,首先先创建一个虚拟机,然后就安装了,不细说。

为了能更好的和主机联接工作,可以自由拷贝文件等,vmware tools就必须安装。

  1. 进入系统后,在VMware菜单栏找到安装虚拟工具的时候,它会弹出一个文件夹,里面就有VMware Tools的安装包。

  2. 把WMwareTools拷贝出来,然后打开终端解压

tar -xzvf VMwareTools-10.0.6-3595377.tar.gz

  1. 进入解压后的目录,执行脚本

sudo ./wmware-install.pl 然后就一直回车了。

  1. Ubuntu会进行的很顺利,而其他发行版却未必。一直回车到底,到最后提示成功,reboot就可以了。

5.网络配置

主机和虚拟机之间的通信,这里我用了些时间。

briged,NAT,host-only,我就不细说了,想了解都能找到。我主要记录我的方法,这里我使用的是briged。

因为它的好处是,两台电脑可以各自拥有各自的静态ip,虽然是共用一个物理网卡,但是虚拟机里面会模拟一个mac地址,并且两台电脑都可以上网。

之前我在windows上很简单,只需要在网络适配器处选择briged,然后再虚拟中配好ip即可。

但这次,我的主机和目标机都是linux,所以遇到了些苦难:cry:。我的操作如下:

  1. 网络适配器处选择briged

  2. virtual network editor,briged中,选择briged to enp3s0,之前是auto

  3. 在主机中,使用sudo vi /etc/network/interfaces,在末尾加入(通过ifconfig知道,我的网卡名字叫enp3s0):


auto enp3s0

iface enp3s0 inet static

address 192.168.16.40

netmask 255.255.255.0

  1. 在虚拟机中,再做相同的操作,ip和主机在同一网段即可。

  2. 在右上角编辑网络中操作。

6.使用gdb和gdbserver调试

  1. 首先在目标机端:

gdbserver 192.168.16.40:111(hostip:port) test(应用程序)

  1. 在主机端:

gdb test

target remote 192.168.16.41:111(targetip:port)

然后,你可以开心的使用b命令打断点,使用c命令运行啦啦啦。

7.通信工具

Windows 下有飞鸽传书,Linux 下则有 IPtux 和 Dukto。IPtux 是 Linux 下目前最好的局域网通讯工具,没有之一。

终端中使用如下命里安装即可:

sudo apt-get install iptux

“网路”标签中可以添加网段。

如果不添加网段,则只能显示本网段的用户。如我是处于 192.168.16.x 网段,是无法显示 192.168.116.x 网段的好友的。所以添加 192.168.161.1-255 的网段。

8.ubuntu全局菜单栏

当我从windows转换到ubuntu的时候,使用各种工具总是不习惯,其中有一个就是ubuntu的全局菜单栏。

每当我打开一个窗口,菜单栏就在最上面,然而我使用工具时候也几乎不最大化,因此当我想要趣做一些操作时,总要把鼠标和视线移到屏幕最上方,真的很不习惯。

那么,能不能把菜单栏变回每个应用工具的菜单栏应该在的位置呢?

其实只需要在desktop background(桌面背景设置)中,找到behavior(行为设置),然后选中in the window's title bar,即可。

9.编译gdb和gdbserver

  1. 编译gdb7.10

../gdb-7.10/configure  --enable-targets=all --enable-64-bit-bfd --prefix=/home/me/Documents/gdbbuild/1-install

../gdb-7.10/gdb/gdbserver/configure  --enable-targets=all --enable-64-bit-bfd --prefix=/home/me/Documents/gdbbuild/1-installserver

  1. 配置环境变量

在~/.bashrc中添加path环境变量的内容

export PATH=/home/me/cross-compile/gdb/bin:/home/me/cross-compile/gdbserver/bin:$PATH

具体路径依照实际环境而定。

  1. 编译源文件

gcc -g -Wl,-Bstatic -IC -Wl,-Bdynamic -lgcc_s -o test test.c

  1. 进行gdb-gdbserver的调试

10.配置NFS

  1. NFS服务端安装与配置
  • 下载安装:~$ sudo apt-get install nfs-kernel-server

  • 安装完成后,创建NFS文件夹:~$ sudo mkdir /home/me(用户名)/nfsroot

  • 修改NFS服务器配置:~$ sudo gedit /etc/exports

  • 在exports最后一行写入:/home/me/nfsroot *(rw,sync,no_root_squash,no_subtree_check)

其中:

  • /home/nfsroot:NFS文件夹

  • *:允许所有的网段访问,也可以使用具体的IP

  • rw:挂载此目录的客户端对该共享目录具有可读可写权限

  • sync:资料同步写入内存和硬盘

  • no_root_squash:root用户具有对根目录的完全管理访问权限

  • no_subtree_check:不检查父目录的权限

  1. 重启服务:

重启rpcbind服务:~$ sudo /etc/init.d/rpcbind restart

重启nfs服务:~$ sudo /etc/init.d/nfs-kernel-server restart

  1. NFS客户端安装配置

NFS客户端在Ubuntu上使用~$ sudo apt-get install nfs-common 安装。ARM开发板则需要重新编译更新内核。

sudo mount -o nolock -t nfs 192.168.16.40:/home/me/nfsroot /mnt

11.镜像里的包本地安装

  1. 将ubuntu的ISO文件mount到文件系统的某个新建目录下,如新建了/media/ubuntuISO目录,则执行以下命令进行挂载:

sudo mount -o loop ubuntu-10.04.4-dvd-amd64.iso /media/ubuntuISO/

注:sudo为在root权限下进行mount操作,是必须的

  1. 修改/etc/apt/sources.list文件内容,指定更新源位置,在该文件中屏蔽掉其他的更新源路径,并在文件最后增加以下内容:

deb file:///media/ubuntuISO/ lucid main restricted

注:该文件也必须在root权限下修改

  1. 执行更新软件包列表命令:

apt-get update

  1. 通过“系统->系统管理->新立得软件包管理器”安装需要的软件包

12.安装wine

Wine 是一个令人神往而且目标远大的开放源代码项目,它尝试去解决在 Linux 上运行 Windows 可执行文件的复杂问题。

这样就可以在linux下面玩游戏哟,但现在如果只是玩游戏的话steam更好用啦:smiley_cat:。

  1. 添加PPA

点击系统->系统管理->软件源->其他软件,点击添加,输入:ubuntu-wine/ppa

  1. 更新列表

sudo apt-get update

  1. 安装Wine

sudo apt-get install wine winetricks

  1. tab和enter键一起按,可点击确定。

13.键盘错乱

ibus-daemon -drx

14.配置tftp

FTP(Trivial File Transfer Protocol),即普通文件传输协议,是用来传送文件的Internet软件程序,它比文件传输协议(FTP)使用简单,但是功能少。

在嵌入式系统中(特别是在开发初期),TFTP和NFS(网络文件系统)这两种方式常用来为目标板从服务器上下载程序。

  1. 安装tftp服务

sudo apt-get install tftp-hpa

sudo apt-get install tftpd-hpa

  1. 创建TFTP目录

首先需要建立一个TFTP目录,以供上传和下载。

  1. 修改配置文件

sudo vi /etc/default/tftpd-hpa


TFTP_USERNAME="root"

TFTP_DIRECTORY="/home/me/tftpboot"

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="-l-c-s"

说明:

TFTP_USERNAME:必须改为当前的用户名,或者root;

TFTP_DIRECTORY:我们设定的TFTP根目录;

TFTP_OPTIONS:TFTP启动参数。意义如下:

-l:以standalone/listen模式启动TFTP服务,而不是从inetd启动。

-c:可创建新文件。默认情况下,TFTP只允许覆盖原有文件,不能创建新文件。

-s:改变TFTP启动的根目录。加了-s后,客户端使用TFTP时,不再需要输入指定目录,填写文件的完整路径,而是使用配置文件中写好的目录。这样也可以增加安全性。

  1. 重新启动服务

sudo service tftpd-hpa restart

  1. 查看tftp相关进程

ps -aux|grep tftp

15.minicom串口通信

安装minicom

sudo apt-get install minicom

后面的配置,因为目标机是虚拟机的原因,暂时遇到了问题。。。

先不管了。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269