zoukankan      html  css  js  c++  java
  • linux-rpm

    rpm构建

    linux distribution linux发行版

    tarball

    为了减少网络资源浪费,将源码进行压缩,tar --> gzip == tar.gz

    gcc

    gcc hello.c 默认生成a.out ./a.out执行
    gcc -c hello.c 生成hello.o ./hello.o
    gcc -O hello.c -c 自动生成hello.o并进行优化
    gcc -o hello hello.c 生成hello.o hello ./hello

    gcc -o thank thank.o thanks2.o ==> ./thank 这就是-o的作用,多个.o文件的时候可以链接
    gcc -Wall 打印更详细的编译过程

    调用外部链接

    gcc sin.c -lm -L/lib -L/usr/lib ==> ./a.out
    -lm == sin函数在libm.so里 -L表示去这个路径下去搜索 lm指libm.so或libm.a

    gcc sin.c -lm -I/usr/include -I为头文件#include 搜索的路径

    -Wall -O 是非必要的flag,程序是c,所以又叫CFLAGS

    make


    vim makefile
    main: main.o hh.o sin.o cos.o
    gcc -c main.c hh.c sin.c cos.c
    注意是Tab

    make

    目标(target) :目标文件1 目标文件2
    gcc -o 欲新建的可执行文件 目标文件1 目标文件2

    $@: 代表目前的目标,对于上述 gcc -o $@ main.c ... 就代表目标main

    ./configure makeclean make makeinstall

    ./configure

    建立MakeFile过程
    cmake也是自动生成makefile,但是需要自己写cmakelist

    ./configure

    • --prefix=/path 指定软件装到那里去,默认usr/local
      过程中会生成makefile

    函数库

    • 静态库 Static libxxx.a
      当函数库升级后,需要重新编译
    • 动态库 Dynamic libxxx.so
      当函数库升级后,不需要重新编译

    linux distribution 目前倾向于使用动态函数库,因为函数库的升级影响比较小
    函数库一般放在 /usr/lib
    kernel提供的函数库放在/lib/modules/
    注意:不同版本内核提供的函数库区别还是很大的

    增加函数库的读取性能

    事先读取动态库加载到内存当中,需要ldconfig 和/etc/ld.so.conf

    1. 在/etc/ld.so.conf中写入要读取的动态库的目录
    2. 利用ldconfig将其读入高速缓存中
    3. 同时将数据记录一份在/etc/ld.so.cache中

    查看软件含有的动态函数库

    ldd /usr/bin/passwd

  • 相关阅读:
    Hyper-V中的VM如何使用Pass-through Disk
    LDF文件丢失, 如何仅用MDF文件恢复数据库呢?
    PowerShell中的一个switch的例子
    NetBiosDomainNamesEnabled与SharePoint User Profile Service Application
    在Windows Server 2008 R2上安装Exchange 2013过程中遇到的一些问题
    C语言位域精解(转)
    uniq命令 (转)
    sort命令
    curl命令(测试连接命令)
    C10K——千万级并发实现的秘密:内核不是解决方案,而是问题所在!(转)
  • 原文地址:https://www.cnblogs.com/hhds/p/15526792.html
Copyright © 2011-2022 走看看