1 常用系统环境配置

2 使用g++编译连接,使用gdb调试

3 使用makefile组织目标文件的依赖关系

4 使用git

1 常用系统环境配置

输入法

Download setup file for sogou input method (a deb file)

sudo dpkg -i sogou_pinyin_linux_1.0.0.0033_amd64.deb

sudo apt-get install -f

system setting > language support 键盘输入方式系统中选择fcitx

root权限

sudo passwd # set password for root

091207

set a english environment

system setting中设置

自定义桌面文件夹  root权限,修改文件$HOME/.config/user-dirs.dirs

Vim

16.04自带语法高亮

使用ctags  跳转到函数定义

sudo apt-get install exuberant-ctags   #安装

进入源代码的最顶层目录,运行 ctags -R,例如:

$ cd ~/work/code/

$ ctags -R

使用ctrl + ] 跳转到函数定义位置

vim就像使用sublime做前端,需要安装插件适应当前的工作

2 使用g++编译连接,使用gdb调试

G++

gcc编译的过程

预编译 (gcc -E), 编译 (gcc), 汇编 (as),和 连接 (ld)

c++的程序需要使用g++编译

g++ shi.cpp -o hello

./hello 运行生成的可执行文件

预编译 (gcc -E) 执行的工作

C语言的预处理主要有三个方面的内容: 1.宏定义; 2.文件包含; 3.条件编译。 预处理命令以符号“#”开头

编译

作为一个中间步骤,gcc把你的代码翻译成汇编语言。

汇编器as

把汇编语言代码转换为目标代码

连接器 ld

“-c”,表示仅编译(Compile),不连接(Make),如果没有”-c”参数,那么就表示连接

gcc –o test test1.o test2.o,将test1.o和test2.o连接为可执行的二进制文件test

-l参数,与之紧紧相连的是表示连接时所要的链接库,比如多线程,如果你使用了pthread_create函数,那么你就应该在编译语句的最后加上”-lpthread”,”-l”表示连接,”pthread”表示要连接的库,注意他们在这里要连在一起写,还有比如你使用了光标库curses,那么呢就应该在后面加上”-lcurses”,比如下面的写法:

gcc –o test test1.o test2.o –lpthread –lcurses

如何使用gdb调试

准备工作,需要向编译得到的可执行文件加入调试信息  使用参数 -g

gcc -g hello.c -o hello

gdb hello

进入gdb,使用help查看命令帮助

gdb running

run 运行程序

continue -- Continue program being debugged

next -- Step program 不跳入函数

step -- Step program until it reaches a different source line 跳入函数

kill 命令,终止正在调试的程序,简写为k

breakpoint

break 8 在对应的行上设置断点

print 打印变量值

watch 实现对一个变量的监控

list命令显示出部分源代码

list 9             用list加行号显示该行附近的源代码,本程序显示的第九行附近的源代码

quit命令,退出gdb调试,简写为q;

3 使用makefile组织目标文件的依赖关系

make

http://www.cnblogs.com/luchen927/archive/2012/02/05/2339002.html

主要内容:

make所做的工作,makefile文件基本编写规则,make的执行过程

进阶 makefile中变量和自动推导

无论是C还是C++,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile),一般来说,每个源文件都应该对应于一个中间目标文件(O文件或是OBJ文件)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link)。

链接器并不管函数所在的源文件,只管函数的中间目标文件(Object File),在大多数时候,由于源文件太多,编译生成的中间目标文件太多,而在链接时需要明显地指出中间目标文件名,这对于编译很不方便,所以,我们要给 中间目标文件打个包,在Windows下这种包叫“库文件”(Library File),也就是 .lib 文件,在UNIX下,是Archive File,也就是 .a 文件。

目标 : 需要的条件 (注意冒号两边有空格)

命令 (注意前面用tab键开头)

实际执行的时候,会比较目标文件和条件文件的时间戳,有选择地执行makefile命令

4 使用git

apt-get install git

git config --global user.name rex

git config --global user.email water799@126.com #设置commit的email

git config --global -l 查看设置信息

git clone https://github.com/ceo1207/helloworld.git #克隆操作

执行克隆操作之后,文件下载的位置在home下

如何设置默认的下载位置

记得查找document

https://git-scm.com/docs/git-clone

相对而言,github for windows非常简洁易操作

Github for Windows

github setup安装出错,hosts重定向github

使用离线版本安装,手工用浏览器下载文件,然后运行.application文件即可

自动创建SSH key,以便当前主机能操作远程仓库

GitHub for Windows - oneBiteArea

27:6d:92:11:6b:5a:d0:b6:d0:ce:e3:49:46:29:f7:90

github基本功能使用

创建或者克隆repository

修改或者创建文件,会自动识别修改,publish之后,上传到远程仓库中

提交PR pull request,可以合并到主分支中

github for windows

process

1 Clone or create repositories

2 Create branches

3 Commit changes

4 share,可以选择和原版本merge

linux c编程(一)的更多相关文章

  1. 【深入浅出Linux网络编程】 "开篇 -- 知其然,知其所以然"

    [深入浅出Linux网络编程]是一个连载博客,内容源于本人的工作经验,旨在给读者提供靠谱高效的学习途径,不必在零散的互联网资源中浪费精力,快速的掌握Linux网络编程. 连载包含4篇,会陆续编写发出, ...

  2. 【linux草鞋应用编程系列】_5_ Linux网络编程

    一.网络通信简介   第一部分内容,暂时没法描述,内容实在太多,待后续专门的系列文章.   二.linux网络通信     在linux中继承了Unix下“一切皆文件”的思想, 在linux中要实现网 ...

  3. 学习linux/unix编程方法的建议(转)

    假设你是计算机科班出身,计算机系的基本课程如数据结构.操作系统.体系结构.编译原理.计算机网络你全修过 我想大概可以分为4个阶段,水平从低到高从安装使用=>linux常用命令=>linux ...

  4. Linux系统编程温故知新系列 --- 01

    1.大端法与小端法 大端法:按照从最高有效字节到最低有效字节的顺序存储,称为大端法 小端法:按照从最低有效字节到最高有效字节的顺序存储,称为小端法 网际协议使用大端字节序来传送TCP分节中的多字节整数 ...

  5. linux系统编程之错误处理

    在linux系统编程中,当系统调用出现错误时,有一个整型变量会被设置,这个整型变量就是errno,这个变量的定义在/usr/include/errno.h文件中 #ifndef _ERRNO_H /* ...

  6. storysnail的Linux串口编程笔记

    storysnail的Linux串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据Ge ...

  7. Linux 网络编程(IO模型)

    针对linux 操作系统的5类IO模型,阻塞式.非阻塞式.多路复用.信号驱动和异步IO进行整理,参考<linux网络编程>及相关网络资料. 阻塞模式 在socket编程(如下图)中调用如下 ...

  8. linux网络编程 no route to host 解决方案

    linux网络编程 no route to host 解决方案 [整合资料] (2013-05-13 21:38:12) 转载▼ 标签: net iptables it 分类: Linux 参考资料h ...

  9. 初探linux内核编程,参数传递以及模块间函数调用

    一.前言                                  我们一起从3个小例子来体验一下linux内核编程.如下: 1.内核编程之hello world 2.模块参数传递 3.模块间 ...

  10. linux脚本编程技术

    linux脚本编程技术 一.什么是脚本 脚本是一个包含一系列命令序列的可执行(777)文本文件.当运行这个脚本文件时,文件中包含的命令序列将得到自动执行. 二.脚本编程 #!/bin/sh 首行固定格 ...

随机推荐

  1. 虚方法(virsual method)

    虚方法(virsual method)挺起来玄乎其玄,向从未听说过这个概念的人解释清楚是一件相当困难的事情. 因为这是一个很不容易理解的概念,但它在比较抽象的代码里边是不可少的. 那么既然用枯燥的文字 ...

  2. P1290 【欧几里德的游戏】

    P1290 [欧几里德的游戏] 真·做题全凭感性 从题目中很容易看出 这是一道\(Gcd\)的题 同时又结合了一些略略的博弈论(丢下锅跑真爽 我们看,辗转相减的\(a,b\)一共只有两种情况 \(a- ...

  3. rabbitmq安装使用

    使用 http://www.open-open.com/lib/view/open1325131828249.html ubuntu:apt-get install erlang-noxsudo ap ...

  4. MySQL-常用的存储引擎

    MySQL-常用的存储引擎 存储引擎 事务 锁粒度 主要应用 忌用 MyISAM 不支持 支持并发插入的表级锁 select,insert 读写操作频繁 MRG_MYISAM 不支持 支持并发插入的表 ...

  5. lintcode 110最小路径和

    最小路径和   描述 笔记 数据 评测 给定一个只含非负整数的m*n网格,找到一条从左上角到右下角的可以使数字和最小的路径. 注意事项 你在同一时间只能向下或者向右移动一步 您在真实的面试中是否遇到过 ...

  6. Exception occurred during processing request: The given object has a null identifier: com.zsn.crm.Model.SaleVisit; nested exception is org.hibernate.TransientObjectException: The given object has a nu

    edit.jsp页面没有加入隐藏字段 id ,导致模型驱动封装时缺少id ,,调用update更新数据库时出错!

  7. 交换机基础配置之三层交换机实现vlan间通信

    我们以上面的拓扑图做实验,要求为pc1,pc2,pc3配置为vlan10,pc4,pc5,pc6配置为vlan20,pc7,pc8,pc9配置为vlan30 server0和server1配置为vla ...

  8. Thinkphp 取消Url默认模块的现实

    例子http://www.tp.com/home/index/index 想要现实的效果是:http://www.tp.com/index/index 1是通过配置路由来达到目的 2通过配置首页的入口 ...

  9. TA-LIB】之MACD

    移动平滑异同平均线(Moving Average Convergence Divergence,简称MACD指标)策略.MACD是查拉尔·阿佩尔(Geral Appel)于1979年提出的,由一快及一 ...

  10. python__高级 : @修饰器(装饰器)的理解

    以下是第一次了解的时候写的东西,有的地方理解不正确,虽已改正但是太片面,请直接看下面第二次修改加上的内容. ---------------------------------------------- ...