linux程序设计笔记

时间:2022-02-01 10:19:45

第1章 入门

编译

gcc -o fred fred.c -lm 链接libm.a的函数库

gcc -I/usr/openwin/include fred.c 包含头文件目录

gcc -L/usr/openwin/lib x11fred.c -lX11 包含链接库目录

gcc -c bill.c 生成目标文件

ar crv libfoo.a *.o 生成静态库

查看可执行文件、库文件内容:nm libfoo.a

查看依赖共享库:ldd program

touch 创建空文件


第2章 shell程序设计

学习shell可以查看软件包安装程序、.xinitrc、startx、/etc/rc.d中脚本 管道和重定向 > 重定向 >> 附加到一个文件尾部

./program 1>out.txt 选择性重定向,仅重定向stdout,0:stdin 1:stdout 2:stderr

管道使用相应输出文件是在命令被创建同时创建的。

file xx 查看文件类型

在自家目录中创建文件夹bin,将自己的程序放在其中

脚本中各种符号:

` ` 反引号,类似$()

[] 类似 test xx

{} 参数扩展,识别${i}_tmp,替换里面的i

. 当前shell中执行命令

: 空命令

$$ $# $@ $0 $1 $2... 参数相关

"" '' 单引号不会替换,24页

$(()) 类似expr,计算表达式值

第3章 文件操作

/Proc目录表示系统信息,里面数字表示一个进程信息

举例,如果需要修改运行程序可打开最大文件数量,可以修改/proc/sys/fs/file-max

第4章 linux环境

列出全部环节变量:set

系统全部用户 /etc/passwd

密码文件 /etc/shadow

日志文件 /var/log

临时文件生成 tmpnam tmpfile

第5章 终端

stdout、stderr重定向以后直接读写终端:打开"dev/tty"

许多终端控制方法都是通过结构termios来实现的。

控制终端示例:

stty -icanon min 1 time 0 立即读取字符

stty icanon min 1 time 0 关闭立即读取字符,以下类似

stty -echo 禁用回显

new_settings.c_lflag &= ~ISIG 可以禁用ctrl+c功能

以linux为例,终端信息保存在/usr/share/terminfo/linux/,链接到/lib/terminfo/l/

infocmp可以查看信息



第8章 MySQL

mysql配置文件/etc/my.cnf


第9章 开发工具

make命令

-k 遇到错误继续执行

-n 输出执行步骤而不是执行

-f 指定文件

伪目标all:指定多个生成对象

$?

$@

$<

$*

-

@

后缀规则: .cpp.o  %.cpp:%.o

生成库语法lib(file.o)



第10章 调试

strip file 删除文件中调试信息

gdb

gcc参数:-g

run 运行

cont 继续

b 断点

breaktrace/where

commands 断点执行命令


cxref可以生成交叉引用表

cflow可以生成函数调用树

gprof查看程序性能,需要编译参数-pg

efence,valgrind查找内存破坏问题


第11章 进程和信号

killall -HUP apache 杀死所有apache进程









第8章 MySQL

mysql配置文件/etc/my.cnf