windows程序员开发linux程序的头一个月
开发环境选择
vim,vscode,qt,visual studio都可以做linux c++开发,但是作为windows程序员,最熟悉的还是visual stuio,加上visual studio 2019 支持cmake及linu开发,所以最终选择了visual studio 2019 + cmake作为开发环境.同时使用虚拟机中的ubuntu作为编译机.学习cmake基本用法
学习设置包含路径;
学习设置库搜索路径;
学习设置动态库静态库的导入;选择boost作为基础库
有许多常用算法的实现,省下不少造轮子的时间.
可以将很多操作系统相关细节透明化,实现跨平台开发.学习一个linux发行版基本用法
选择了最容易入手的ubuntu,有界面操作,也可以使用命令行,还有进程监视器.选择一个文件传输工具
FinalShell,不经可以通过ui传输文件,还可以通过ui的方式操作文件.编码
算法实现上到是没什么区别,但是一些细节还是需要注意的:- 路径格式,windows是正斜杠('/')反斜杠('')都ok,linux必须是正斜杠('/').经常使用boost::filesystem库会减少很多麻烦.
- windows下wchar_t是2个字节,linux下是三个字节,所以代码不能写的太死,内存分配是经常使用sizeof就可以了.
- 本机字符windows下是ansi,linux是utf-8,即平时使用的api参数是char*时,windows必须传ansi字符串,而linux必须传入utf-8字符串.
- 尽量不要使用UINT DWORD这些visual c++的数据类型,旧代码改造留下的如果修改很麻烦,就只能用个头文件typedefine一下这些类型了.
- linux不支持代码导入库,即不能使用 #pragma comment(lib,"xxx")这种方法通过代码自动导入库,只能通过cmake代码导入.
- windows的dll搜索路径默认包含当前路径,linux并没有,不会搜索当前路径,可以通过修改LD_LIBRARY_PATH环境变量来添加索索路径.
- gcc编译器很多时候比msvc的编译器更加严格,相同的代码,windows下编译通过,linux下编译反而报错.
- linux下一切皆文件,包括socket,进程等,这点和windows的句柄有点不一样.如果需要在进程间传递句柄,则需要使用linux特有的与套接字,这点在windows下反而更方便,一个windows api就可以实现跨进程句柄拷贝了.
- linux下网络使用epoll,windows使用iocp,不过有boost的asio,直接封装好了.
现状
一个多月过去了,现在程序已经可以跑在windows和linux上了,visual studio 2019帮了很大的忙,试想如果从vim开始写linux,估计会把人逼疯.而通过vs,一个月,基本上现在常规的开发,问题已经不大了,偶尔遇到问题,也基本可以解决.
windows程序员开发linux程序的头一个月的更多相关文章
- WSL2:在Windows系统中开发Linux程序的又一神器
作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...
- gcc和MinGW的异同(在cygwin/gcc做的东西可以无缝的用在linux下,没有任何问题,是在windows下开发linux程序的一个很好的选择)
cygwin/gcc和MinGW都是gcc在windows下的编译环境,但是它们有什么区别,在实际工作中如何选择这两种编译器. cygwin/gcc完全可以和在linux下的gcc化做等号,这个可以从 ...
- 程序员藏经阁 Linux兵书
程序员藏经阁 Linux兵书 刘丽霞 杨宇 编 ISBN 978-7-121-21992-4 2014年1月出版 定价:79.00元 536页 16开 内容提要 <Linux兵书>由浅 ...
- 调皮的程序员:Linux之父雕刻在Linux内核中的故事
本文内容由公众号“格友”原创分享. 1.引言 (不羁的大神,连竖中指都这么帅) 因为LINUX操作系统的流行,Linus 已经成为地球人都知道的名人.虽然大家可能都听过钱钟书先生的名言:“假如你吃 ...
- Web程序员开发App系列 - 调试Android和IOS手机代码(补图)
Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...
- Web程序员开发App系列 - 申请苹果开发者账号
Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...
- Web程序员开发App系列 - 认识HBuilder
Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...
- .Net程序员学习Linux(一)
本次知识点:Linux系统的多终端切换,linux下的用户,linux远程访问工具使用,linux下重要的目录,命令的组成,通配符,linux的路径问题,文件操作的综合运用 为什么学习linux? 1 ...
- Net程序员学习Linux
Net程序员学习Linux 本次知识点:Linux系统的多终端切换,linux下的用户,linux远程访问工具使用,linux下重要的目录,命令的组成,通配符,linux的路径问题,文件操作的综合运用 ...
随机推荐
- 关于虚继承的sizeof问题
首先关于虚继承和普通继承的知识,我总结一下: 1.普通继承时,无论派生类是否定义新的虚函数,基类和派生类总是共享一个虚函数表,不需要另加指向虚函数的指针,派生类只是将虚函数表中的元素改成了派生类的地址 ...
- codeforces 8C(非原创)
C. Looking for Order time limit per test 4 seconds memory limit per test 512 megabytes input standar ...
- vue中子组件更新父组件
当在子组件里更改了某些信息且关闭子组件后,需要父组件更新修改后的内容,该如何操作 1.$emit触发 父组件 @add="add(val)" 子组件 this.$emit('add ...
- sdutoj2887
#include <stdio.h> #include <math.h> int main(){ int px,tx;double alpha; int T;scanf(&qu ...
- asp.net 从Excel表导入数据到数据库中
http://www.cnblogs.com/hfzsjz/archive/2010/12/31/1922901.html http://hi.baidu.com/ctguyg/item/ebc857 ...
- [转]论基于DSSA的软件架构设计与应用
[摘要] 去年三月份,我所在的公司启动国网电力用户用电信息采集系统项目,我被任命为项目负责人.国网电力用户用电信息采集系统是国家电网公司坚强智能电网建设的一部分.由于公司之前为南网(主要是广东省) ...
- js Memory Management
js Memory Management 垃圾回收是一个术语,在计算机编程中用于描述查找和删除那些不再被其他对象引用的对象的处理过程. 换句话说,垃圾回收是删除任何其他对象未使用的对象的过程. 垃圾收 ...
- Java Hipster
Java Hipster JHipster JHipster is a development platform to quickly generate, develop, & deploy ...
- leetcode solution cracked tutorial
leetcode solution cracked tutorial problemset https://leetcode.com/problemset/all/ Top Interview Que ...
- css故障文字动画
免费分享95套java实战项目,不仅有源码还有对应的开发视频,关注公众号『勾玉技术』回复"95"即可获取 首先给内容上hover和before, .glitch:hover:bef ...