Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不同平台之间共享C代码_C_Linux_Raspberry Pi - Fatal编程技术网

如何在不同平台之间共享C代码

如何在不同平台之间共享C代码,c,linux,raspberry-pi,C,Linux,Raspberry Pi,我正在编写一对C程序,通过套接字在Linux主机和Raspberry Pi之间进行通信。有一些共享的代码和数据;和一些通用套接字函数 我的第一个想法是将公共功能放在存档库中。这似乎有些过分,因为该库必须在两种平台上编译。下一个想法是使用一个公共文件,该文件将#包含在两个程序中 我知道在头文件中放代码一直是不受欢迎的,所以我想听听其他的想法 我只有几百行代码。这是一个供我个人使用的小爱好项目,所以没有什么太重的东西。易于维护、无成本和将来的可扩展性是我的主要目标。如果使用良好的构建系统,编写库只需

我正在编写一对C程序,通过套接字在Linux主机和Raspberry Pi之间进行通信。有一些共享的代码和数据;和一些通用套接字函数

我的第一个想法是将公共功能放在存档库中。这似乎有些过分,因为该库必须在两种平台上编译。下一个想法是使用一个公共文件,该文件将
#包含在两个程序中

我知道在头文件中放代码一直是不受欢迎的,所以我想听听其他的想法


我只有几百行代码。这是一个供我个人使用的小爱好项目,所以没有什么太重的东西。易于维护、无成本和将来的可扩展性是我的主要目标。

如果使用良好的构建系统,编写库只需列出库所需的源文件即可。然后告诉构建系统要为哪个子项目使用哪个编译器,并且应该为每个目标系统自动构建库。即使使用
make
在PC和RPi项目中使用不同的目标编译器也没有那么困难或复杂。我不明白为什么在这两种平台上编译它们会有点过分。h文件与任何东西有什么关系?设计HAL的一种常见方法是在h文件中有一个公共API,然后根据目标链接这些函数的不同实现。另外,Rasp PI不是ARM的一部分,Linux主机不是x86的一部分吗?那么,你怎么能不为两种平台编译这个项目呢?如果你有几行以上的共享代码,那么创建一个库就不会太过了。这是一个干净的解决方案(而且很容易,在你完成一次之后),它与你的主要目标(可扩展性和可维护性)很好地一致。另一个不同(不推荐!)的解决方案是将共享源文件链接到不同的项目目录中,这是我们公司在一些旧项目中使用的解决方案。我说不出在我的职业生涯中,有多少次我因为这个原因想打垮我的前任。如果你使用一个好的构建系统,写库就像列出库所需的源文件一样简单。然后告诉构建系统要为哪个子项目使用哪个编译器,并且应该为每个目标系统自动构建库。即使使用
make
在PC和RPi项目中使用不同的目标编译器也没有那么困难或复杂。我不明白为什么在这两种平台上编译它们会有点过分。h文件与任何东西有什么关系?设计HAL的一种常见方法是在h文件中有一个公共API,然后根据目标链接这些函数的不同实现。另外,Rasp PI不是ARM的一部分,Linux主机不是x86的一部分吗?那么,你怎么能不为两种平台编译这个项目呢?如果你有几行以上的共享代码,那么创建一个库就不会太过了。这是一个干净的解决方案(而且很容易,在你完成一次之后),它与你的主要目标(可扩展性和可维护性)很好地一致。另一个不同(不推荐!)的解决方案是将共享源文件链接到不同的项目目录中,这是我们公司在一些旧项目中使用的解决方案。我不能说在我的职业生涯中,有多少次我因为这个原因想揍我的前任。