Linux 下C++编写

时间:2023-03-08 17:30:07
Linux 下C++编写

今天搞了一天Linux下C++编程,还没有什么成效。好烦躁好心焦,想砸电脑的冲动。抽根烟理下思路一定要把它拿下!!

===搞了两天,真是搞到生无可恋,试了共享文件, 试了网络配置,各种博客就是各种行不通(其实,个人觉得,同一个问题很多人都会遇到,但是每个问题又有无数个细节左右,可能别人根据这种方法解决了,对你并不一定好使。不要太过于依赖博客,作为参考即可,还是要学会分析问题抓住核心,大不了推倒从来)。还好,跟一实验室的朋友一起弄,他在某大公司培训过Linux,自是熟练得多,也没搞出。。。。重装!!!!!是啊,所有路都走不通的时候为什么不从头再来呢?果断好使了啊。

前言

很专业的介绍编辑器:http://blog.csdn.net/netanimals/article/details/6446174

Windows下,开发工具多以集成开发环境IDE的形式展现给最终用户,而linux下,开发工具被切割成一个个独立的小工具。各自处理不同的问题。例如:

编辑器(emacs, vim) 用来进行编辑程序的
调试器(gdb) 用来调试程序
编译器(GCC) 用来编译和链接程序的
性能分析工具(gcov, gprof) 用来优化程序的
文档生成器(doxygen) 用来生成文档的

GCC可以看作一个软件包,除了编译工具,它还集成了调试器gdb性能分析工具gcov, gprof。只要我们装好了GCC,这些强大工具就可以直接使用了。

联网状态下:yum install gcc  自动解决依赖问题

但是yum install gcc-c++ libstdc++-devel 安装g++就不成功

用which g++就可以查看g++安装成功与否(在。/usr/bin)

文件的编译过程

在一次电话面试中被问到c++文件的编译过程,没怎么准备的我自然是没有答上来啊,面试官很nice的鄙视了一把。

编译原理给的过程:

一.词法分析

二.语法分析

三.语义分析

四.优化

五.目标代码生成

另一种详细的说法:(图来源于:http://www.cnblogs.com/kekec/p/3238741.html)

Linux 下C++编写

预处理:主要是做一些代码文本的替换工作。(该替换是一个递归逐层展开的过程。)

(1)将所有的#define删除,并展开所有的宏定义

(2)处理所有的条件预编译指令,如:#if  #ifdef #elif #else #endif

(3)处理#include预编译指令,将被包含的文件插进到该指令的位置,这个过程是递归的

(4)删除所有的注释//与/* */

(5)添加行号与文件名标识,以便产生调试用的行号信息以及编译错误或警告时能够显示行号

(6)保留所有的#pragma编译器指令,因为编译器需要使用它们

编译:把预处理完的文件进行一系列词法分析lex)、语法分析yacc)、语义分析优化后生成汇编代码,这个过程是程序构建的核心部分。

汇编:汇编代码->机器指令。

链接:这里讲的链接,严格说应该叫静态链接。多个目标文件、库->最终的可执行文件(拼合的过程)。

http://blog.csdn.net/microzone/article/details/6707327

此过程中我自己用到的一些命令记录如下

1.执行一下 ifconfig 命令,看看目前工作的网卡是哪个

2.linux删除目录使用rm -rf命令即可。
     直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字
     -r 就是向下递归,不管有多少级目录,一并删除
     -f 就是直接强行删除,不作任何提示的意思

3.lspci :查看网卡的硬件信息  (如果是usb设备,则用lsusb)

4.ifconfig : 查看接口信息

(ifconfig -a :所有网络接口;  ifconfig eth0:查看eth0接口)

(ifup eth0:启用网卡eth0; ifdown eth0 :禁用网卡eth0)

5.setup:手动配置ip,getway,network等

[所有网卡信息在配置文件中:/etc/sysconfig/network-scripts/]

[DNS配置文件:/etc/resolv.conf]

[主机名配置文件:/etc/sysconfig/network]