• 开发环境选择

    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,一个月,基本上现在常规的开发,问题已经不大了,偶尔遇到问题,也基本可以解决.

最新文章

  1. 删除流氓软件McAfee
  2. COGS1008. 贪婪大陆[树状数组 模型转换]
  3. eclipse 搭建Swt 环境
  4. iOS - 类簇
  5. 1.Java内存区域
  6. tar.gz和rpm安装文件(转载)
  7. hdu 1063 Exponentiation
  8. web页面的生命周期
  9. ASP.net+MVC--2
  10. Ubuntu12.4 64位 安装 arm linux gcc 4.3.2
  11. Android文字的复制和粘贴
  12. svn 目录设置为 不提交 忽略
  13. git 忽略已跟踪的文件
  14. zf-关于平台的用户名密码的设置
  15. Spring MVC深入学习
  16. 约瑟夫环简介,问题以及java实现
  17. c#中快速排序的学习
  18. 怎样删除PeopleSoft进程服务器定义
  19. BZOJ 1208 宠物收养所 set+二分
  20. Atcoder Contest069F:Flag

热门文章

  1. Python append() 与深拷贝、浅拷贝
  2. ES索引Index相关操作&ES数据类型、字符串类型text和keyword区别
  3. hihocoder 1631
  4. vue2 响应式细节
  5. 机器学习入门实战——基于knn的airbnb房租预测
  6. css position sticky All In One
  7. HTTPS All In One
  8. App Store Connect
  9. vue components registration & vue error & Unknown custom element
  10. vue技术栈