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

  • 相关阅读:
    SQL所有者更改问题
    人生路上对我影响最大的三位老师
    自我介绍
    Ural_1146. Maximum Sum (DP)
    Ural_1654. Cipher Message(栈)
    Ural_1333. Genie Bomber 2
    POJ_2112 Optimal Milking(网络流)
    Ural_1031.Railway Ticket (DP)
    Ural_1030. Titanic
    Ural_1207. Median on the Plane(计算几何)
  • 原文地址:https://www.cnblogs.com/hhds/p/15526792.html
Copyright © 2011-2022 走看看