嵌入式Linux开发的编程语言选择

欢迎大家关注我的公*号:embedded_bug

这里的嵌入式Linux环境是指非标准Linux发行版环境,比如通过buildroot创建的,相比于标准的Linux发行版比如ubuntu,debian,fedora,系统比较简陋,提供的库很有限,而且系统的各种配置文件和配置方式与标准Linux发行版差别很大,总之,这里的嵌入式Linux只保证系统能够基本的启动运行起来。

在这里插入图片描述

上图是现在编程语言的流行度排名,别看这么多语言,真正适合在嵌入式Linux中应用的并不多。

直接说结论,个人推荐:go>C++(11)+boost>c,其他语言目前还都不太适合。

本篇文章先讨论C和C++,下面一篇文章讨论go及其他语言。

一、C语言,迫不得已的选择

​ C语言作为最基本的编程语言,只要是个嵌入式Linux环境肯定都是支持的,但是同样使用C的问题很多,包括:

  • 语言比较老旧,很多高级语言的特性比较缺乏,程序写起来比较费时间,容易出错,代码行数也多。

  • 基础C库功能太少,需要什么新功能还得去找相当的函数库,然后交叉编译,测试函数库功能怎么样,是否满足需求,费时费力。

    总之,C语言的问题是库少,写起来费事,容易出错。优点是程序运行速度快,空间占用小。

二、C++(基于11标准,配合boost库),不能用go时候的选择

选择C++有两个条件,基于C++11标准编写程序,并配合boost库。如果还是用C的思想在用C++,那还不如直接用C。使用C++,一定要将C++当成一个不同于C的全新语言使用,否则发挥不出C++的优势。

C++11相比于之前的C++是巨大的进步,并且gcc4.8.5的版本已经能够完整支持C++11了。C++11的特性包括自动类型推导,自动指针,lamba表达式等等。代码写起来更流畅,更精简了。唯一的缺点就是太复杂了,否则也就没go什么事了。

​ boost库为什么是一个必选项呢,因为boost库实在太强大了,嵌入式开发百分之九十以上的需求都可以通过boost库实现,完全不需要借助第三方库,包括串口操作boost库中都包含了。并且boost库大部分是头文件,交叉编译出来的so文件也并不大,占用不了太多空间。

​ https://www.boost.org/doc/libs/1_76_0/

看下boost的文档,你就知道boost库的功能有多强大。

C++11+boost库的缺点就是太复杂,学习起来比较困难,不过真要用熟了,绝对就成了C++大师了,跳槽升职加薪迎娶白富美走向人生巅峰不是梦!

下面列举几个C++ boost库的代码示例

用boost库解析命令行参数:

using namespace std;
namespace bpo = boost::program_options;
namespace blog = boost::log;
namespace baio = boost::asio;

// 解析命令行参数
int initFlag(int argc, char* argv[], string &configDir, string &logDir, int &logLevel) 
{
	//步骤一: 构造选项描述器和选项存储器
    //选项描述器,其参数为该描述器的名字
    bpo::
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值