首页 > 技术文章 > linux c编程(一)

ceo1207 2017-02-15 12:12 原文

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

推荐阅读