最近上手修改一个 C 程序,无奈基础不扎实发生了很郁闷的问题,特来请教大大们。
开发环境是 mac ,但是程序中的两个头文件无法找到,如果是在 Ubuntu 下则没问题。
#include <linux/ip.h>
#include <linux/tcp.h>
查了一下发现有类似的问题,解决方法是使用其他头文件替代,例如:netinet/ip.h替代linux/ip.h
那么问题来了:
目前是在虚拟机 Ubuntu 上开发,其实最终目的还是想回到 osx 上写,多少觉得虚拟机不方便。
1
alqaz 2016-11-29 00:45:21 +08:00
跨平台,可以用宏
当然,小东西还可以自己写,如果太大的话,建议用开源跨平台库,自己维护太坑,而且很容易把业务代码和跨平台代码堆在一起,这是挖大坑。你这个应该是网络相关的,你可以试下 Libevent 或者 Boost asio ,都支持 win,linux,macos |
2
fei051466 OP @alqaz 非常感谢。不过回头才发现我的表述不完整。程序最终确定只需在 linux 上运行,所以无需跨平台。另外它需要运行在一些嵌入式系统中,所以不知后面说的 libevent 是否还合适。最后想再问个基础问题:是不是不能通过简单的移植使得 osx 也支持这个头文件?是不是底层调用不支持?
|
3
raysonx 2016-11-29 01:17:29 +08:00 via Android 1
linux 目录下的头文件是 Linux 内核的头文件,不是标准库或者 POSIX 标准的头文件,当然不能在非 Linux 使用( osx 不是 Linux )
|
5
q397064399 2016-11-30 07:56:23 +08:00
类 Unix 系统阵营之间的分化不是一天两天的事情了, posix 没出来之前,各个平台的移植性,几乎把 C/C++等程序员玩成精神分裂,如果是做嵌入式系统,最好是根据板子上的发行版,选择相应的 Linux 发行版即可
|