记录
记录的是Linux桌面程序的开发,不是服务器开发
环境搭建
系统
准备两台机器,一个装Linux作为开发机、另外一个装Windows作为辅助。
Q:为什么不用虚拟机?
A:虚拟机里不适合桌面开发:太卡,UI操作也不方便。
Linux机器装Fedora,不要装其他发行版。
Q:Fedora有什么好?
A:凭个人经验,Fedora是个全栈的系统,所有工具都集成。其他发行版总有某个模块(或软件)是集成第三方的。
Q:windows机器干嘛用的
A:配合开发机用:下载东西,查文档等等。Linux下不能做的事实在太多。不一一列出了。弄台辅助机器,省时省力。
Q:两台机器怎么传数据,传文件。
A:没有开箱即用的办法。比较麻烦,ftp、samba都需要配置,飞秋之类的兼容性比较差。
IDE
不用,Linux下没有一个通吃所有的集成环境。选择了某个IDE就意味着有很多迁移工作要做。
推荐:
管理自己的代码用CMake,扩展性好,依赖少,跨平台,使用方便。
第三方代码用它自带的BuildSystem(通常是AutoTool)
自己的代码引用第三方库,就用CMake的FindPackage
编译器:
GCC、Clang都可以,个人比较推荐clang。
编辑器:
随意,习惯用哪个就用哪个
打包方式:
别用rpm、dpkg之类的。用rar或zip压缩包,解压即用(类似windows的绿色软件)
为了防止跟系统的库冲突,可以用linux-user-chroot启动一个容器,在容器里运行app,代码如下:
linux-user-chroot --mount-bind ${APP_ROOT}/usr /usr / $*
把这段代码保存到文件,runapp.sh,运行app时,用命令:
APP_ROOT=/your/app/dir runcmd.sh appname
依赖的库怎么办
尽可能的全打包。编译用rpath写死依赖库的路径。
Q:为什么要全打包
A:把依赖库拆出来,是Distor管理系统的方式,很明显不适合App级别的管理。你见哪个应用程序把自己安装到C:\Windows目录下的,还不得被用户骂死。应用程序就要自己独占一个目录,所有资源:可执行程序、文档、素材都放一起。