linux编程基础

find 目录 参数 名称

find ./ -name "progremer"

find ./ -type f 

find ./ -type d 

find ./ -ctime +1

find ./ -mtime +1

find ./ -atime -1

find ./ -maxdepth 3 -name "progremer"

find ./ -mindepth 3 

find ./ -type d -exec shell 命令 {} ;

如 find ./ -type d -exec ls -l {} ;

    find ./ -type d -ok ls -l {} ;

    find ./ -type d | xargs ls -l

根据文件内容查找:

grep -r "查找的内容" 搜索的路径

grep -r "stdio.h"  ~

grep -r "stdio.h"  ~ -n 行号

gcc

gcc 文件.c  -o 目标文件名 直接由.c文件编译成可执行文件;

gcc 文件.c  -I 头文件目录 -o 目标文件名 编译时,指定头文件位置;

gcc 文件.c -c  -I 头文件目录 由.c文件转成二进制.o文件。

gcc 文件.c -I 头文件目录 -D 宏文件(DEBUG) -o 目标文件名;

gcc 文件.c -I 头文件目录 -D 宏文件(DEBUG) -o 目标文件名 -Wall;显示编译警告;

gcc分步编译过程:

gcc -E 源文件(.c文件)-o 目标文件(.i)  预处理  c文件

gcc -S 源文件(.i文件)-o 目标文件(.s文件)经编译器编译,变成 汇编文件 

gcc -c 源文件 (.s文件)-o 目标文件(.o文件)。经汇编器汇编,成为 二进制文件

gcc 源文件 (.o文件)-o 目标文件。         经链接器链接,成为可执行文件 

静态库文件名规则:lib+自定义库名+.a

静态库制作步骤:

         将.c生成.o文件

           gcc 文件.c -c 

         将.o打包

           ar rcs 静态库的名字 原材料;如ar rcs libtest.a a.o b.o;

静态库的使用:

          gcc 文件.c -I 头文件目录 -L ./lib/(静态库目录) -lmycalc(libmycalc.a)库名 -o app

          -L指定库的路径;

          -l指定库的名字取得lib和.a;

          -I 头文件目录;

          动态库命名规则:lib+自定义库名+.so

          动态库的制作:

                         将源文件生成.o

                         gcc  a.c b.c -c fpic(fPIC)

                          打包

                          gcc -shared a.o b.o -o  libxxxx.so

           动态库的使用

                          头文件a.h

                          动态库 libtest.so

                           参考函数声明编写测试程序main.c

                          gcc main.c -I ./ -L ./ -l test -o app

      note:

                ldd app(可执行文件)  可查看当前所运行的可执行文件的依附文件是否可找到;

                file app(文件名)查看文件类型

                 nm 文件名 查看.o二进制文件内函数;

          对于ELF格式的可执行程序,是由Id-linux.so*来完成的,它先后搜索ELF文件的

                            DT_RPATH 段

                     -----环境变量 LD_LIBRARY_PATH

                     -----/etc/Id.so.cache 文件列表

                      -----/lib ----------/usr/lib目录

            找到文件后,将其载入内存。

          动态库无法加载

                   使用环境变量:

                          (1)临时设置:

                                      在终端 LD_LIBRARY_PATH=动态库路径(终端页面内有效)

                          (2)永久设置

                                      用户级别:~/.bashrc

                                                        #export LD_LIBRARY_PATH = 动态库路径

                                                            配置完成后,重启终端(只有在终端打开的时候,才会读~/.bashrc文件)或source ~/.bashrc

                                      系统级别:/etc/profile

                                                       export LD_LIBRARY_PATH = 动态库路径:$LD_LIBRARY_PATH

                                                       配置完成后,重启终端(只有在终端打开的时候,才会读/etc/profile文件)或source /etc/profile

                                                      对所有用户生效。

                                                           

原文地址:https://www.cnblogs.com/paddingtoneyes/p/11039117.html