開始只是簡簡單單的用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
$./hello2.有關靜態庫
(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,本次學習記錄結束