zoukankan      html  css  js  c++  java
  • 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

                                                          对所有用户生效。

                                                               

  • 相关阅读:
    golang API开发过程的中的自动重启(基于gin框架)
    单位时间的调度问题 —— 贪心
    Qt获取文件夹下文件
    C++ using
    QGridLayout动态添加控件
    数据库查询优化-20条必备sql优化技巧
    Django:类视图的装饰器
    使用同一个模态框进行新增和修改
    Django:使用celery处理异步任务
    jenkins:调用jenkinsAPI
  • 原文地址:https://www.cnblogs.com/paddingtoneyes/p/11039117.html
Copyright © 2011-2022 走看看