linux下codeblocks如何配置交叉编译

我要用codeblocks交叉编译和调试arm开发板上的程序,宿主机是ubuntu16.04.开发板是嵌入式linux操作系统。

1、配置交叉编译环境

image

由上到下,1处直接选择即可。2处是你交叉编译器安装位置,3 4 5 6 可以在你交叉编译器安装位置下的bin目录找到,arm-linux-gdb默认是不安装的,需要我们自己安装,安装arm-linux-gdb和gdbserver需要另外安装(如果没有安装的话),arm-linux-gdb安装目录最好也选择为交叉编译器安装目录。即/usr/local/arm/arm-linux-4.4.3。

2、arm-linux-gdb和gdbserver安装方法

注:arm-linux-gdb的安装路径是/usr/local/arm/arm-linux-4.4.3

arm-linux-gdb的编译安装
下载gdb-6.8.tar.bz2至工作目录

gdb源码下载:http://ftp.gnu.org/gnu/gdb/

命令如下:

$tar -jxvf gdb-6.8.tar.bz2
$cd gdb-6.8
$./configure --target=arm-linux --enable-sim --prefix=/usr/local/arm/arm-linux-4.4.3

--prefix用于指定安装路径

$make
$sudo make install
完成后可以在/usr/local/arm/arm-linux-4.4.3/bin下找到arm-linux-gdb文件
arm-linux-gdbserver的编译安装
进入./gdb/gdbserver

命令如下:

$cd gdb/gdbserver./configure --target=arm-linux --host=arm-linux
$make CC=arm-linux-gcc
(CC=arm-linux-gcc用于指定arm-linux编译器)
编译成功后在当前目录下会生成gdbserver文件,拷贝至开发板上(可放入开发板/usr/bin/目录下,这样在任何目录下均可执行gdbserver命令)

3、配置nfs文件共享。

(1)sudo apt-get install nfs-kernel-server
sudo apt-get install portmap nfs-common
Ubuntu 上默认是没有安装 Ubuntu nfs 服务器的,因此我们首先安装 Ubuntu nfs 服务器端:
$sudo apt-get install nfs-kernel-server
在一些文档中,提出还需要使用 apt-get 来手动安装 nfs 的客户端 nfs-common,以及端口映
射器 portmap,但其实这是没有必要的,因为在安装 nfs-kernel-server 时,apt 会自动为我们把它们安装好。
(2)sudo vim /etc/exports
加入这么一行:
/home/somebody/nfs_root/rootfs_mini/ *(rw,sync,no_root_squash)
(/home/somebody/nfs_root/rootfs_mini/ 是我的根文件系统所在的位置)
Ubuntu nfs 允许挂载的目录及权限在文件/etc/exports 中进行了定义。
例如,我们要将根目录下的 rootfs 目录共享出来,那么我们需要在/etc/exports 文件末尾添加
如下一行:/rootfs *(rw,sync,no_root_squash)
其中: /rootfs 是要共享的目录, *代表允许所有的网络段访问, rw 是可读写权限,sync 是资料
同步写入内存和硬盘,no_root_squash 是 Ubuntu nfs 客户端分享目录使用者的权限,如果客
户端使用的是 root 用户,那么对于该共享目录而言,该客户端就具有 root 权限。
其它 Ubuntu nfs 常用的参数有:
ro 只读访问
rw 读写访问 sync 所有数据在请求时写入共享
async nfs 在写入数据前可以响应请求
secure nfs 通过 1024 以下的安全 TCP/IP 端口发送
insecure nfs 通过 1024 以上的端口发送
wdelay 如果多个用户要写入 nfs 目录,则归组写入(默认)
no_wdelay 如果多个用户要写入 nfs 目录,则立即写入,当使用 async 时,无需此设置。
hide 在 nfs 共享目录中不共享其子目录
no_hide 共享 nfs 目录的子目录
subtree_check 如果共享/usr/bin 之类的子目录时,强制 nfs 检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的 UID 和 GID 映射匿名用户 anonymous,适合公用目录。
no_all_squash 保留共享文件的 UID 和 GID(默认)
root_squash root 用户的所有请求映射成如 anonymous 用户一样的权限(默认)
no_root_squas root 用户具有根目录的完全管理访问权限
anonuid=xxx 指定 nfs 服务器/etc/passwd 文件中匿名用户的 UID
anongid=xxx 指定 nfs 服务器/etc/passwd 文件中匿名用户的 GID
(3)

修改挂载点的属性
chmod 777 /home/somebody/nfs_root/rootfs_mini/
(4)
重启 nfs
sudo /etc/init.d/nfs-kernel-server restart
sudo /etc/init.d/portmap restart
(5)
在本机上测试
showmount -e
sudo mount -t nfs –o nolock 192.168.2.10:/home/somebody/nfs_root/rootfs_mini/ /mnt/nfs/
ls -l /mnt/nfs/
nfs mount 默认选项包括文件锁,依赖于portmap提供的动态端口分配功能。
解决方法:kill 文件锁(lockd)或者mount -o nolock

于是尝试mount -o nolock -t nfs 192.168.1.24:/home/test /mnt/nfs,正常工作。

nfs mount device or resource busy

这是因为多次挂载的原因,因此要先umount /mnt/nfs 一下 ,如果还是挂载不成功需要重启开发板来试试。
注:可以通过一个符号链接来 export NFS 目录,但在/etc/exports 下所添加的挂载点应为真
正的目录。比如建一符号链接
ln -s /home/pub/work/freerunner/out/target/product/freerunner /home/jgyang/nfsroot 
这样在开发板上设置的内核命令行中设置的 NFS 目录就可是:/home/jgyang/nfsroot,但在
/etc/exports 文 件 中 export 出 的 目 录 应 当 是 实 际 的 NFS 所 在 的 目 录 , 即
/home/pub/work/freerunner/out/target/product/freerunner。
这样有两个好处,一是可以省去开发板中启动参数命令过长的麻烦;二是在重新编译 androi之后可以直接使用生成的 NFS,而不必再重新拷贝一份。

4、修改工程的调试属性

我通过网络来实现gdb的远程调试,这样我需要将宿主机的一个目录挂载到开发板上,这就是nfs的作用了。选择什么目录随意。挂载/home/project、目录到开发板的/gdbserver目录下。然后再宿主机/home/project/目录下建立工程,修改项目调试属性。

点击项目右键,点击属性。

image

image

修改debug的ip地址和端口,端口任意,但是ip地址是开发板的ip地址。这是为了连接开发板的gdbserver而设置的。

这样设置就基本完成了。可以开始调试了。

5、调试示例

前边我们已经将gdbserver拷贝到/usr/bin目录下。所以我们进入挂载目录/gdbserver运行

gdbserver 192.168.0.232:1111 ./bin/debug/usb 这里ip地址是宿主机的,端口自定,但是要和codeblock一样。./bin/debug/usb 是指生成的二进制可调试文件。

然后再宿主机开始调试吧,如下图

image

image

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 1. 打开终端,输入以下命令安装Code::Blocks: sudo apt-get update sudo apt-get install codeblocks 2. 安装完成后,打开Code::Blocks,选择“File”菜单中的“New”选项,选择“Project”创建新项目。 3. 选择“Console Application”,点击“Go”按钮。 4. 在“Project Title”中输入项目名称,选择项目路径,点击“Next”按钮。 5. 在“Compiler”中选择编译器,例如“GNU GCC Compiler”,点击“Finish”按钮。 6. 在Code::Blocks中编写代码,保存文件,点击“Build and Run”按钮编译并运行程序。 7. 如果需要安装其他编译器或插件,可以在Code::Blocks的“Settings”菜单中选择“Compiler”或“Plugins”进行安装和配置。 ### 回答2: Code::Blocks是一个开源的集成开发环境(IDE),主要针对C,C++和Fortran编程语言。它在Linux系统中的安装非常简单,只需要根据以下步骤进行即可。 步骤一:首先打开Linux终端,输入以下命令更新软件源列表。 sudo apt-get update 步骤二:输入以下命令来安装Code:: Blocks IDE。 sudo apt-get install codeblocks 步骤三:等待一段时间,安装完成后,可以在应用程序菜单中找到Code:: Blocks IDE,在“编程”选项下。 步骤四:如果你想用Graphical User Interface(GUI)来安装Code:: Blocks IDE,则需要下载安装包。打开网站https://www.codeblocks.org/downloads/binaries/ 下载使用Debian的Linux系统的安装文件。你也可以选择其他文件,根据系统信息进行选择。 步骤五:下载完成后,进入下载文件夹并找到该文件,使用以下命令打开终端: sudo dpkg -i codeblocks_17.12_amd64.deb 步骤六:使用以下命令安装依赖项: sudo apt-get install -f 步骤七:Code:: Blocks IDE安装完成后,可以在终端中输入以下命令启动它: codeblocks 这些就是在Linux系统下安装Code:: Blocks的步骤。Code:: Blocks提供了各种各样的功能,包括代码自动完成,突出显示语法,调试等。使用Code:: Blocks IDE,开发人员可以轻松地编写和调试代码,编写优秀代码。 ### 回答3: CodeBlocks是一种集成开发环境(IDE),可以在Linux,Windows和Mac OS X操作系统上使用。它是一款开源软件,是C ++开发人员最常使用的IDE之一。安装CodeBlocks IDE将允许您编写,调试和运行C ++代码。在Linux操作系统上安装CodeBlocks很容易,只需遵循以下步骤: 1. 下载CodeBlocks安装包。 要下载CodeBlocks,请前往CodeBlocks官网:http://www.codeblocks.org/downloads。 官网为各种不同的操作系统提供了不同的版本,我们需要选择适合我们Linux发行版的版本。 2. 安装CodeBlocks。 在Linux中安装CodeBlocks最好使用软件包管理器。因此,我们可以使用以下命令在Ubuntu中安装CodeBlocks: sudo apt-get update sudo apt-get install codeblocks 此命令将更新软件包列表并安装最新版本的CodeBlocks。 3. 添加编译器和调试器。 安装CodeBlocks后,我们需要将编译器和调试器添加到IDE中。对于C ++编程,我们将使用GNU编译器。我们可以执行以下命令以在Ubuntu上安装GNU编译器: sudo apt-get install build-essential 4. 运行CodeBlocks IDE。 完成上述步骤后,我们可以开始使用CodeBlocks IDE编写和编译C ++代码。要启动CodeBlocks,我们可以执行以下命令: codeblocks 5. 创建和运行C ++程序。 在CodeBlocks中创建和运行C ++程序很简单。我们可以使用以下步骤: a. 在CodeBlocks中创建新项目。 b. 将C ++代码添加到项目中。 c. 用GNU编译器编译我们的代码。 d. 运行我们的程序。 通过遵循上述步骤,就可以在Linux上安装CodeBlocks IDE,并使用该平台编写和运行C ++代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值