- 论坛徽章:
- 0
|
windows和linux开发c/c++各自的优势,我一个同学去面试,被问了这么一个问题,
平时基本上只在linux下写程序,所以只对linux下开发c/c++有些许认识,请大家补充,共同学习。
- linux下
- gcc,shell,gdb这些都是命令行的,给程序开发提供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能。
- 使用Makefile管理整个工程的编译和链接。
- gcc相对于VC的优势:
- 1. GCC的跨平台优势
- 2. GCC对代码的优化方面提供了丰富的支持
- 3. 程序的编译过程分为预处理,编译,链接,函数库的链接
- GCC允许你在上面任何一个过程中停下来查看中间结果,并对其加以控制。
- * 预处理
- GCC的-E选项可以让GCC在预处理后停止编译,并向标准输出打印预处理过后的文件。
- * 编译
- 我们用GCC的-c选项来编译和汇编源文件而不链接。
- * 链接
- gcc helloworld.o –o helloworld
- 生成可执行文件
- * 函数库的链接
- 当我们要使用函数库不在GCC默认的搜索路径下的时候(例如pthread),
- 我们就需要手工来告诉GCC他们的位置。
- gcc helloworld.c -o helloworld -lpthread
- gdb相对于VC的优势:
- 1. 设置断点时,我们可以设置一个条件,当条件成立时,程序自动停止,这是gdb一个非常强大的功能
- break if i=100
- 2. 我们可以使用GDB提供的command命令来设置停止点的运行命令。也就是说,当运行的程序在被停止住时,我们可以让其自动运行一些别的命令,这很有利行自动化调试。对基于GDB的自动化调试是一个强大的支持。
- commands [bnum]
- ... command-list ...
- end
- 为断点号bnum指写一个命令列表。当程序被该断点停住时,gdb会依次运行命令列表中的命令。
-
- 例如:
- break foo if x>0
- commands
- printf "x is %d\n",x
- continue
- end
- 断点设置在函数foo中,断点条件是x>0,如果程序被断住后,也就是,一旦x的值在foo函数中大于0,GDB会自动打印出x的值,并继续运行程序。如果你要清除断点上的命令序列,那么只要简单的执行一下commands命令,并直接在打个end就行了。
- 可能有些地方说的不对,请大家指点,补充!
- windows下
- 也就是VC下,........没有发言权,请各位补充!
复制代码 |
|