Linuxノート---ソース方式インストールソフトウェア

5394 ワード

1.オープンソース、コンパイラ、実行可能ファイルとは
CやJavaなどの特定のプログラミング言語を使用して、作成された純粋なテキストファイルはソースファイルです.ソースファイルの作成が完了したら、コンパイラによってソースファイルをオペレーティングシステムが理解できるバイナリ実行可能ファイルにコンパイルします.
Linuxで最も標準的なプログラム言語はCなので、C文法を使ってソースコードを書き終わった後(*.c拡張子の形で存在する)、Linuxで標準的なC言語のコンパイラgccというプログラムでコンパイルすれば、実行可能なバイナリプログラムを作ることができます.
実際には、コンパイル中にターゲットファイルも生成されます(*.o拡張子として存在します).また、プログラムで他の外部サブルーチンを呼び出したり、他のソフトウェアで提供されている関数機能を利用したりする場合があります.この場合、コンパイル中に関数ライブラリを追加する必要があります.これにより、コンパイラはすべてのプログラムコードを関数ライブラリにリンクして、正しい実行可能ファイルを生成することができます.
2.従来のプログラム言語によるコンパイル
  • シングルソースファイル作成実行可能ファイル:
  • //      C    hello.c    ,    Hello World!
    vim hello.c
    //      gcc  ,            a
    gcc hello.c
    //   
    ./a.out
    
  • マルチソースファイルターゲットファイルを利用した実行可能ファイル作成:
  • ソースファイルが1つだけではない場合があるため、直接コンパイルできません.この場合は,まずターゲットファイルを生成し,その後リンクでバイナリ実行可能ファイルを作成する必要がある.
    //   -c        。-O       
    gcc [-O] -c thanks_1.c thanks_2.c
    //        thanks_1.o thanks_2.o      
    //            ,  -o             。-Wall              
    gcc [-Wall] -o thanks thanks_1.o thanks_2.o
    //         
    ./thanks
    
  • 外部関数ライブラリへの加入
  • // sin, ,
    gcc [-Wall] -o thanks thanks_1.o thanks_2.o -lm [-L/lib -L/usr/lib -I/usr/include]
    // -l:
    // m: libm.so , ,lib (.a .so)
    // -lm libm.so( libm.a) 。
    // -L: 。 Linux ,
    // -I: include 。 Linux include ,

    
    ### 3.  make     
    *      make
       4     ,   main.c、haha.c、sin_value.c cos_value.c。       ,      :
    

    // 1. , 4 .o
    gcc -c main.c
    gcc -c haha.c
    gcc -c sin_value.c
    gcc -c cos_value.c
    // 2. , libm , main
    gcc -o main main.o haha.o sin_value.o cos_value.o -lm -L/usr/liba -L/lib
    // 3.
    ./main

    >                  ,  gcc          。    make         。
        make ,         Makefile  ,Makefile                。               configure( config)  ,                   。
        ,           ,   ./configure  Makefile,   make  。
    
    *     make  
    vi makefile
    

    // 1. makefile , main
    main: main.o haha.o sin_value.o cos_value.o
    gcc -o main main.o haha.o sin_value.o cos_value.o -lm
    // gcc

    // 2. makefile
    rm -f main *.o <==
    make

    * makefile        
    

    : 1 2...
    gcc -o 1 2

                 ,             :
    vi makefile
    

    main: main.o haha.o sin_value.o cos_value.o
    gcc -o main main.o haha.o sin_value.o cos_value.o -lm
    clean:
    rm -f main main.o hah.o sin_value.o cos_value.o

        ,makefile       ,      ,  make clean,      main,  make main。          main,   make clean main
    
    *      makefile
    vi makefile
    

    LIBS = -lm
    OBJS = main.o haha.o sin_value.o cos_value.o
    main: ${OBJS}
    gcc -o main ${OBJS} ${LIBS}
    clean:
    rm -f main ${OBJS}

    * Tarball       
     1. ./configure --prefix=/usr/local/apache
            makefile  。                     README INSTALL  。configure        --prefix,           ,      ,   /usr/local。    ./configure --help       。
     2. make clean
          。                        (*.o)  。
     3. make
    make   makefile              。     gcc            ,             。             。
     4. make install
           ,  makefile   install   ,            ,    。
    * Tarball      
              /usr/local/software ,     /usr/local/src 。
      ,   apache   /usr/local/apache  ,         :
    

    /usr/local/apache/etc
    /usr/local/apache/bin
    /usr/local/apache/lib
    /usr/local/apache/man

                    ,   /usr/local/apache/bin  PATH 。
      /usr/local/apache/man     man page      。
    /etc/man.config  40~50         :
    

    MANPATH/usr/local/apache/man

    
    ### 4.            
    >                ,                     ,           ,      ,                      。
           ,            ,             ,            。Linux              。  
    
    *           
      mysql     /usr/lib/mysql  ,      : 
    vi /etc/ld.so.conf 
    

    include ld.so.conf.d/*.conf
    /usr/lib/mysql <==

    // /etc/ld.so.conf , /etc/ld.so.cache
    idconfig

    // (/etc/ld.so.cache )
    ldconfig -p

    *              
    

    // -v ,
    ldd [-v] /usr/bin/passwd

    ### 5.        
            ,        md5 sha1   ,               : 
    *      
    

    // ,
    md5sum CentOS-5.3-i386-netinstall.iso sha1sum CentOS-5.3-i386-netinstall.iso

              , Linux                 ,        : 
    /etc/passwd 
    /etc/shadow(           ) 
    /etc/group 
    /usr/bin/passwd 
    /sbin/portmap 
    /bin/login(           ) 
    /bin/ls 
    /bin/ps 
    /usr/bin/top 
      md5sum    ,       ,     shell script               。