在windows下写linux代码直接编译

大多数人都习惯于在windows下用source insight编辑代码,然后用xftp拷贝到linux下进行编译,如果有小的改动,就直接在linux下用vim进行编辑修改。至于为什么是vim,工作这么多年,还没有一家公司的服务器是带界面的,可以安装使用ide的。
稍微进阶一点的办法,就是实现linux和windows文件夹共享,我们在windows上直接对着共享文件夹内的代码进行编辑,然后就在linux下进行执行make编译就行了,不需要再xftp拷贝。方法有两个:

  1. 在linux下安装samba,然后配置,最后在windows上添加一个网络位置的方式来实现linux和windows文件夹共享。
  2. 在windows上安装SftpDrive,然后ssh到linux下指定一个目录映射到windows下驱动器。
    这里重点说方法2,最方便好用,因为我们公司的linux服务器管理严格,不让安装samba,而且只开放了ssh端口供我们开发使用,那么SftpDrive是最合适的了。
    这里写图片描述
    输入服务器地址,端口,用户名,密码,然后在Directory选择linux下要映射的代码目录,在Drive Letter选择映射到windows下的驱动器盘符,点击connect
    这里写图片描述
    SftpDrive百度网盘分享链接:https://pan.baidu.com/s/1nwfku1N 密码:52b3

2019.2.28更新
SftpDrive在win10机器上用不了,我找了好久找到一个可以用的简单方便,SFTP Net Drive,附上下载链接点击跳转
在这里插入图片描述
选择Advanced Settings,再选择Drive,只需要注意Drive Type和Specified folder就好了
在这里插入图片描述
一般都是选择网络映射,然后指定映射目录/home
详细的配置说明我们可以看官网的介绍http://cdn.nsoftware.com/help/NDC/app/pg_advancedsettings.htm

已标记关键词 清除标记
相关推荐
编译过程: 1). 解压后默认的文件夹位置是在D:\Linux-0.11,如果你不是将文件解压到该目录下, 你要修改MinGW32目录下的MinGW32.bat文件,将里面的PATH指向MinGW32的bin目录. 2). 打开Linux-0.11目录,双击MinGW32.bat快捷方式,打开控制台. 3). make 一下,生成1.44M的Boot.img软盘镜像,要清除编译结果请"make clean" 4). 如果安装了bochs,直接双击bochsrc.bxrc即可运行Linux-0.11了. 5). 也可用其它虚拟机加载Boot.img后运行,如果出现Kernel panic,请把虚拟机里的硬盘删了 6). 在出现Insert root floppy and press ENTER以后,将rootimage-0.11.img载入虚拟软驱,回车 这就是能在windows环境下编译Linux 0.11了,不是在Cygwin,也不是在虚拟机里,而是使用MinGW. 下面是在Windows编译Linux 0.11会遇到的问题和对原文件作的修改: 1.赵炯博士已经将汇编程序中引用的C变量(包括嵌入汇编的C变量)的下划线去掉了,但MinGW的gcc可能是为了与其它Windows下的编译器保持兼容,并不能识别这些不带下划线的C变量,因而还得把原先已经在汇编程序中去掉下划线的C变量加上下划线,同时也要把被C程序引用的汇编程序中的变量加上下划线. 2.MinGW中不带as86编译器,因而把boot目录下原先用as86编译的bootsect.s和setup.s两个程序修改成能用nasm编译的程序.并且更名为bootsect.asm和setup.asm. 3.在Makefile作的主要修改: 在LDFLAGS中加了--image-base 0x0000 将elf_i386改成i386pe 将cd 与 make 之间的;改成&,如cd kernel ; make 改成cd kernel & make MinGW中没有sync这个程序,可以把它注释掉,更简单的办法是一个sync.c,这个sync.c只包含一个空的main函数,编译成sync.exe 因为类似的原因,make dep会出错 4.生成的system文件是PE格式的(PE是Portable Executable的简称),这是windows下的可执行文件的格式,显然是不能直接执行的,必须加以转化.我实现了通过两种方式加以转化. 1)一个程序Trans.cpp将system.exe里的代码和数据从PE文件里解析出来,生成一个system.bin文件,这个文件是能被setup模块直接加载的.我已经将这个程序放在了Linux-0.11的tools目录下,要微软的编译编译. 2)自己一个PE Loader,这种方式比较麻烦,但是想想自己也能做一个PE Loader,还是满有成就感的,尽管这是一个最简单的Loader.代码是加在Linux-0.11-With-PE-Loader\boot目录下的setup.asm文件里,里面有详细的注释. 5.对tools下的build.c作了修改,使其能生成可引导的1.44M的软盘镜像文件Boot.img 6.在Link的过程中,init目录下的main.c会出现以下错误: boot/head.o(.text+0x540c):fake: undefined reference to `_main' init/main.o(.text+0x16f):main.c: undefined reference to `_alloca' init/main.o(.text+0x174):main.c: undefined reference to `__main' make: *** [tools/system.exe] Error 1 第一个和最后一个错误还好理解,但中间那个错误那就莫明其妙了,因为Linux 0.11根本没有这个函数,在gcc的编译选项里也有-nostdinc .有一个解释是main函数不是一个普通的函数,MinGW gcc会对它作特殊的处理.解决的办法其实也很简单,把main.c下面的main函数改名为_main,或者是干脆把它改成另外一个函数,就改成start吧.记得把head.s里的_main也改了. 在最后,要感谢《自己动手操作系统》的作者于渊,其实我也是先将原先只能在Linux编译的书里源代码用MinGW移植到Windows编译的过程中才试着在Windows编译Linux 0.11源代码的,有了在Windows编译Linux 0.11源代码的经
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页