怎样的linux开发方式?很原始的

2015年11月20日 14:31:06

从月初开始接触 linux 开发,真心是磕磕绊绊。简单的使用,查阅一些操作命令这些都不是问题,困难主要在于 linux 下的开发。

  1. 大学有一本 unix 的教材,至少看了前五章。自己也折腾安装过 linux 的系统,从 CentOS、Fedora 到 debian,安装后也简单的操作过,虽说没有任务驱动最终也不了了之。但多少不认生。
  2. 公司的开发环境是有几台 suse 的服务器,在不同的局域网里。远程连接上去进行开发。使用的工具是 Xbrowser,其中包括 Xshell、Xftp 等。最开始两天使用过其中的 XDMCP 以图形界面操作局域网 A 中一台服务器,唯一的感受就是卡,画面的操作很不流畅,严重影响使用体验。一开始使用 suse 企业版 10 远程图形界面操作一般,后来重装系统 open suse linux 10 之后,XDMCP 的操作体验变得很糟糕。
  3. XDMCP 的使用,需要在服务器上进行有关的设置。后来在 57(局域网B中服务器的 ip)服务器上开发,工作组成员都没有此服务器的 root 权限。再没有使用图形界面,使用 Xshell+Xftp,使用 Xshell 进行和开发有关的操作,使用 Xftp 进行文件的传输和文本的编辑。基本上就是在主机上使用 notepad++ 编辑代码,通过 Xftp 同步到服务器,在 Xshell 中进行编译、运行操作(还没有掌握 gdb,调试处于看错误输出,改项目源码的阶段)。在 Xftp 中可以直接打开服务器上的源码进行编辑保存操作,所以还是比较方便的。
  4. 目前阶段这种“拼凑”的开发方式还是足够用的,但能明显感觉到瓶颈。对 vim 的操作止于零,这个周末在家练习,一步步把 vim 搭建成开发环境。+ makefile文件 + gdb
  5. 有时间了补足一下 x- 系列的操作步骤,虽然简单,但当时在网上没找到有关的介绍,前后也花费了大半天时间。

x-系列使用教程

在网上搜到两篇帖子,重点在讲怎么配置 linux 以供 windows 上使用 x- 连接。因为工作过程中并不需要我来配置 linux,所以这两篇帖子并没有看过。

以下是工作过程中在 windows 上如何操作的记录:

注意事项:以上操作只是在 cts2 项目中,使用 Xshell、Xftp 远程操作 suse 服务器时的有关设置。因为连接协议、端口以及用户名等都与服务器设置关联,故不具有通用性。

推荐,查阅软件的使用帮助

Xshell 帮助

如果其中找不到,再去网上搜索。

编译时怎么定义目录

2015年12月21日 18:24:22

首先说明,这里主要针对使用 makefile 生成项目时怎么定义目录。而不是特指 windows 下使用 VS 生成项目时有关目录下从存放什么文件。

lib 目录

以上,可以参考linux 系统下,/lib 目录内容(/lib64 or /usr/lib or /usr/lib64)

lib 目录

lib 包含程序实现文件编译生成的library,包括静态库.a 和动态库.so文件

我们可以来看一看:

1
2
3
4
5
6
7
8
9
10
11
C:\Dev-Cpp>dir lib /s /b /a >lib.txt
...

C:\Dev-Cpp\lib\gcrt1.o
C:\Dev-Cpp\lib\gcrt2.o
C:\Dev-Cpp\lib\libadvapi32.a
C:\Dev-Cpp\lib\libapcups.a
C:\Dev-Cpp\lib\libbfd.a
C:\Dev-Cpp\lib\libbfd.la
C:\Dev-Cpp\lib\libcap.a
...

include 目录

类似的,/usr/include 目录内容

include 目录

include 包含程序定义的一些东西的头文件,比如宏,结构定义,函数定义,类型定义。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
C:\Dev-Cpp>dir include /s /b/a >incld.txt
...
C:\Dev-Cpp\include\dos.h
C:\Dev-Cpp\include\errno.h
C:\Dev-Cpp\include\excpt.h
C:\Dev-Cpp\include\exdisp.h
C:\Dev-Cpp\include\exdispid.h
C:\Dev-Cpp\include\fcntl.h
C:\Dev-Cpp\include\fenv.h
C:\Dev-Cpp\include\float.h
...
C:\Dev-Cpp\include\c++\fstream
C:\Dev-Cpp\include\c++\functional
C:\Dev-Cpp\include\c++\iomanip
C:\Dev-Cpp\include\c++\ios
C:\Dev-Cpp\include\c++\iosfwd
C:\Dev-Cpp\include\c++\iostream
...

bin 目录

同样,/usr/bin 目录内容

bin 目录

bin 包含可执行文件。

1
2
3
4
5
6
7
8
9
10
11
12
C:\Dev-Cpp>dir bin /s /b /a >bin.txt
...
C:\Dev-Cpp\bin\g++.exe
C:\Dev-Cpp\bin\g77.exe
C:\Dev-Cpp\bin\gcc.exe
C:\Dev-Cpp\bin\gccbug
C:\Dev-Cpp\bin\gcov.exe
C:\Dev-Cpp\bin\gdb.exe
C:\Dev-Cpp\bin\gprof.exe
C:\Dev-Cpp\bin\ld.exe
C:\Dev-Cpp\bin\make.exe
...

小结

这些文件夹是为了区分文件方便而建立的,同一个文件夹下的文件的性质一般是相同的。我们可以看出来:

  • lib 是放 obj 文件的(对 gcc 来说为 .o);
  • inlcude 是存放头文件的;
  • bin 存放的是二进制代码;