本帖最后由 vsfopen 于 2018-8-30 23:07 编辑
目前,vsflinux虽然已经开源,但是还没公开linux头文件的生成方法,我先尝试几种方法,最终确定下最简单的。
目前尝试的方法:
win10的wsl(windows subsystem for linux):
1. 在win10的powershell管理员模式下,运行lxrun /install
2. 安装完成后,可以运行bash on ubuntu on windows
安装完后,建议更新一下。
3. 安装linux头文件,不过这里只能使用x86-64的只要安装GCC后,头文件就位于/usr/include里,把include目录,全部复制到vsf/component/port/linux下
4. 删除include目录里,和IAR冲突的头文件
比如:setjmp.h, stdio.h, string.h等等
5. 修改feature.h
- #undef ......
- #undef __KERNEL_STRICT_NAMES
- #define __USE_VSF
- #ifdef __USE_VSF
- # define _POSIX_SOURCE 1
- # define _POSIX_C_SOURCE 1
- # define __USE_POSIX199309 1
- # define __USE_MISC 1
- // to avoid types.h to define stdint types
- # define __int8_t_defined
- #endif
在开头的一大段#undef后,增加上面的代码
6. 修改pthread相关的头文件,主要修改数据结构:- typedef struct vsfsm_crit_t pthread_mutex_t;
- typedef union
- {
- #ifdef __USE_VSF
- struct vsfsm_t *pending_next;
- #else
- struct
- {
- int __lock;
- unsigned int __futex;
- __extension__ unsigned long long int __total_seq;
- __extension__ unsigned long long int __wakeup_seq;
- __extension__ unsigned long long int __woken_seq;
- void *__mutex;
- unsigned int __nwaiters;
- unsigned int __broadcast_seq;
- } __data;
- char __size[__SIZEOF_PTHREAD_COND_T];
- __extension__ long long int __align;
- #endif
- } pthread_cond_t;
第二种,最简单的方法:
1. 加QQ群:736714326
2. 群文件里下载include_wsl_fixed.zip
|