最终目标是允许最终用户/管理员能够通过CLI开关(即"--foo=31 --bar=0"
)和/或配置文件(即cat /etc/blah.conf -> "foo=31nbar=0n"
)的组合来设置程序选项。所讨论的语言是c++,尽管许多语言并没有太大意义。目标是从ARMv6(Raspberry Pi)到x86_64的任何平台上的GNU/Linux。
有两种明显的解决方案,使用基本的标准库功能编写argc/v和conf文件解析器OR,使用现有库,如libconfig。我过去的做法是总是使用图书馆,而不是重新发明轮子;但是,这是我第一次瞄准嵌入式平台。这让我怀疑,编写此代码所涉及的浪费和错误风险是否超过了减少依赖项和可能的更小代码的好处。
那么问题是,在这种情况下,该怎么办呢?而且,在评估多平台代码的库和滚动之间的选择时,有经验法则吗?
我理解您的痛苦:开发时间/便利性与占地面积。就我个人而言,我坚信使用现有的包最终总是有益的,只要你选择积极维护的包。Libconfig似乎不那么活跃,在我的书中,这对于一个成熟的包来说仍然是可以接受的状态。
对于嵌入式Linux,就占地面积而言,您必须考虑更大的情况。您的应用程序是唯一需要libconfig的应用程序吗?rootfs上的其他应用程序需要像libxml这样的东西吗?在这种情况下,请使用libxml。因此,请检查您的rootfs中是否有类似的库。
其次,您谈论的是大约150kB的磁盘空间。真的值得为它经历所有的麻烦吗?有大量的包裹比这更大,所以能够从你的清单中删除另一个包裹可能是花费你的精力的更好方式。不要担心RAM的使用情况,这会更少。Linux只会在使用时从磁盘加载代码和数据页。