vsflinux的linux头文件生成方法

[复制链接]
 楼主| vsfopen 发表于 2018-8-30 18:27 | 显示全部楼层 |阅读模式
本帖最后由 vsfopen 于 2018-8-30 23:07 编辑

目前,vsflinux虽然已经开源,但是还没公开linux头文件的生成方法,我先尝试几种方法,最终确定下最简单的。
目前尝试的方法:
win10的wsl(windows subsystem for linux):
1. 在win10的powershell管理员模式下,运行lxrun /install
wsl.png
2. 安装完成后,可以运行bash on ubuntu on windows
bash.png
安装完后,建议更新一下。
3. 安装linux头文件,不过这里只能使用x86-64的只要安装GCC后,头文件就位于/usr/include里,把include目录,全部复制到vsf/component/port/linux下
port_linux.png
4. 删除include目录里,和IAR冲突的头文件
比如:setjmp.h, stdio.h, string.h等等
5. 修改feature.h
  1. #undef ......
  2. #undef        __KERNEL_STRICT_NAMES

  3. #define __USE_VSF
  4. #ifdef __USE_VSF
  5. # define _POSIX_SOURCE                1
  6. # define _POSIX_C_SOURCE        1
  7. # define __USE_POSIX199309        1
  8. # define __USE_MISC                        1
  9. // to avoid types.h to define stdint types
  10. # define __int8_t_defined
  11. #endif
在开头的一大段#undef后,增加上面的代码
6. 修改pthread相关的头文件,主要修改数据结构:
  1. typedef struct vsfsm_crit_t pthread_mutex_t;

  2. typedef union
  3. {
  4. #ifdef __USE_VSF
  5.   struct vsfsm_t *pending_next;
  6. #else
  7.   struct
  8.   {
  9.     int __lock;
  10.     unsigned int __futex;
  11.     __extension__ unsigned long long int __total_seq;
  12.     __extension__ unsigned long long int __wakeup_seq;
  13.     __extension__ unsigned long long int __woken_seq;
  14.     void *__mutex;
  15.     unsigned int __nwaiters;
  16.     unsigned int __broadcast_seq;
  17.   } __data;
  18.   char __size[__SIZEOF_PTHREAD_COND_T];
  19.   __extension__ long long int __align;
  20. #endif
  21. } pthread_cond_t;












第二种,最简单的方法:
1. 加QQ群:736714326
2. 群文件里下载include_wsl_fixed.zip
long931229 发表于 2020-2-22 19:57 | 显示全部楼层
下次有人骂我了...我给他还回去..

90

主题

325

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部