Linux學習筆記之一 ---學習linux初衷和入門

本人大部分時間都是從事於C++相關的開放工作,隨着公司demo和production機器的不斷增加,運維監控,自動運維的事項被重視,開始配置開源的監控工具,開發對應的插件。

開始只是簡簡單單的用yum install安裝配置,然後寫對應的插件,但是對於開發的自己老覺得既然是開源,不分析和調試源碼心裏還是癢癢的,此時的自己發現有點無從下手,windows習慣了IDE的作用,雖然linux也有部分IDE,大部分還是GDB調試,不懂就抽空學習,於是萌發了學習linux下的相關編程學習,由於原先配置的監控軟件已經是在centos的linux下,就直接用centos學習吧 , 本人學習的書籍是《linux 程序設計》第四版,有錯誤之處請指出,也僅僅是自己的理解記錄自己的學習過程,看具體的可以直接度娘下載

今天就從Hello World 開始吧

1.編譯、連接和運行程序

hello.c

#include<stdio.h>
#include<stdlib.h>

int main(){
  printf("Hello World\n");
  exit(0);
}


$gcc-o hello hello.c

$./hello

2.有關靜態庫
(1)創建小型函數庫,fred.c和bill.c
fred.c
#include<stdio.h>

void fred(int arg){
  printf("fred:we passed %d\n",arg);
}

bill.c
#include<stdio.h>

void bill(char*arg){
 printf("bill:we passed %s\n",arg);
}
$gcc -c bill.c fred.c (其中-c選項的作用是阻止編譯器創建一個完整的程序)
$ls *.o
bill.ofred.o

(2)編寫一個調用bill的函數程序,創建一個頭文件lib.h
lib.h
/*
 *Thisislib.h.It declares the functions fred and bill forusers
 */

void bill(char*);
void fred(int);

(3)然後再編寫調用程序program.c
#include<stdlib.h>
#include"lib.h"

int main(){
   bill("Hello Wrold");
   exit(0);
}

(4)編譯顯式指定目標文件,然後要求編譯器編譯文件及其先前編譯好的目標模塊bill.o鏈接
$gcc -c program.c 
$gcc -o program program.o bill.o
$./program
bill:we passed Hello World


(5)創建庫文件
$ar crv libfoo.a bill.o frde.o
a-bill.o
a-fred.o


在某些系統中尤其是BerkeleyUnix衍生的系統中,需要爲函數生成一個內容表執行如下命令
$ranlib libfoo.a


(6)現在可以使用函數庫了
$gcc -o program program.o libfoo.a 
$./program
bill:we passed Hello World

(7)可以使用ldd來查看程序需要的共享庫
$ldd program
linux-vdso.so.1=> (0x00007ffe27305000)
libc.so.6=>/lib64/libc.so.6(0x00007f01a57ab000)
/lib64/ld-linux-x86-64.so.2(0x00007f01a5b7f000)


(8)獲取幫助
$man gcc
$info gcc

OK,本次學習記錄結束


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章