【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)

简介: 【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)

一.make的由来

"make"是一个用于自动化构建软件的工具,通常用于编译和构建程序。当你运行make命令时,make工具会查找当前目录下的Makefile文件,该文件包含了编译程序所需的指令和规则。


       make起初是人们为了简化g++编译而发明出来的批处理工具,通过其自动调用指令而进行编译。

二.安装make        

sudo apt install make


三.编写Makefile

       进入到d2lros2/d2lros2/chapt2/basic下使用vim新建Makefile。

       然后将上一篇中的的g++编译指令用下面的形式写到Makefile里(最好要熟悉或者会使用基础的vim指令)。

build:

       g++ first_ros2_node.cpp \

       -I/opt/ros/jazzy/include/rclcpp/ \

       -I /opt/ros/jazzy/include/rcl/ \

       -I /opt/ros/jazzy/include/rcutils/ \

       -I /opt/ros/jazzy/include/rmw \

       -I /opt/ros/jazzy/include/rcl_yaml_param_parser/ \

       -I /opt/ros/jazzy/include/rosidl_runtime_c \

       -I /opt/ros/jazzy/include/rosidl_typesupport_interface \

       -I /opt/ros/jazzy/include/rcpputils \

       -I /opt/ros/jazzy/include/builtin_interfaces \

       -I /opt/ros/jazzy/include/rosidl_runtime_cpp \

       -I /opt/ros/jazzy/include/tracetools \

       -I /opt/ros/jazzy/include/rcl_interfaces \

       -I /opt/ros/jazzy/include/libstatistics_collector \

       -I /opt/ros/jazzy/include/statistics_msgs \

       -I /opt/ros/jazzy/include/service_msgs/ \

       -I /opt/ros/jazzy/include/type_description_interfaces/ \

       -I /opt/ros/jazzy/include/rosidl_dynamic_typesupport/ \

       -I /opt/ros/jazzy/include/rosidl_typesupport_introspection_cpp/ \

       -L /opt/ros/jazzy/lib/ \

       -lrclcpp -lrcutils  \

       -o first_node

 

#编译执行完后立刻删除first_node

clean:

       rm first_node

四.编译运行

       键入以下命令即可编译生成可执行文件:

make build


运行该文件:

./first_node

开启新终端,可查看ros节点列表:

ros2 node list

五.删除可执行文件

make clean

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
相关文章
|
3月前
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
148 2
|
3月前
|
存储 安全 Linux
|
2月前
|
Ubuntu Linux Go
golang编译成Linux可运行文件
本文介绍了如何在 Linux 上编译和运行 Golang 程序,涵盖了本地编译和交叉编译的步骤。通过这些步骤,您可以轻松地将 Golang 程序编译成适合 Linux 平台的可执行文件,并在目标服务器上运行。掌握这些技巧,可以提高开发和部署 Golang 应用的效率。
217 14
|
3月前
|
Linux Shell 数据安全/隐私保护
|
3月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
288 8
|
3月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
1026 6
|
3月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
160 3
|
5天前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
21 11
|
2月前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
92 14
Linux 10 个“who”命令示例