歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Linux下的C語言開發

Linux下的C語言開發

日期:2017/3/1 10:39:18   编辑:Linux編程
在很多人的眼裡,C語言和Linux常常是分不開的。這其中的原因很多,其中最重要的一部分我認為是Linux本身就是C語言的傑出作品。當然,Linux操作系統本身對C語言的支持也是相當到位的。作為一個真正的程序員來說,如果沒有在Linux下面用C語言編寫過完整的程序,那麼只能說他對C語言本身的理解還相關膚淺,對系統本身的認識也不夠到位。作為程序員來說,Linux系統為我們提供了很多理想的環境,這其中包括了下面幾個方面,

(1)完善的編譯環境,包括gcc、as、ld等編譯、鏈接工具
(2)強大的調試環境,主要是gdb工具
(3)豐富的自動編譯工具,主要是make工具
(4)多樣化的os選擇,Ubuntu、redflag等等
(5)浩瀚的開源代碼庫

當然,不管我怎麼說,最終朋友們還是應該自己勇敢地跨出前進的第一步。如果還沒有過Linux編程經驗的朋友可以首先在自己的pc上面安裝一個虛擬機,然後就可以在shell下面編寫自己的C語言代碼了。

[cpp]
  1. #include <stdio.h>
  2. int main()
  3. {
  4. printf("hello!\n");
  5. return 1;
  6. }
編寫完上面的代碼後,你需要做的就是兩個步驟:1、輸入 gcc hello.c -o hello;2、輸入./hello。如果一切正常的話,此時你應該會在屏幕上看到一行hello的打印。如果你看到了,那麼恭喜你,你已經可以開始Linux的c語言編程之旅了。

當然,我們不會滿足於這麼簡單的打印功能。下面就可以編寫一個簡單的迭代函數,
[cpp]
  1. #include <stdio.h>
  2. int iterate(int value)
  3. {
  4. if(1 == value)
  5. return 1;
  6. return iterate(value - 1) + value;
  7. }
  8. int main()
  9. {
  10. printf("%d\n", iterate(10));
  11. return 1;
  12. }
此時,同樣我們需要重復上面的步驟:1、輸入gcc hello.c -o hello;2、輸入./hello。當然此時如果一切OK的話,你就會看到屏幕會有55這個數的輸出。本來1到10的數據之和就是55, 這說明我們的程序是正確的。

當然, 還會有一些朋友對程序的反匯編感興趣,那麼他需要兩個步驟:1、gcc hello.c -g -o hello;2、objdump -S -d ./hello。之所以在gcc編譯的時候加上-g是為了添加調試信息,objdump中的-S選項是為了在顯示匯編代碼的時候同時顯示原來的C語言源代碼。
[cpp]
  1. int iterate(int value)
  2. {
  3. 8048374: 55 push %ebp
  4. 8048375: 89 e5 mov %esp,%ebp
  5. 8048377: 83 ec 08 sub $0x8,%esp
  6. if(1 == value)
  7. 804837a: 83 7d 08 01 cmpl $0x1,0x8(%ebp)
  8. 804837e: 75 09 jne 8048389 <iterate+0x15>
  9. return 1;
  10. 8048380: c7 45 fc 01 00 00 00 movl $0x1,0xfffffffc(%ebp)
  11. 8048387: eb 16 jmp 804839f <iterate+0x2b>
  12. return iterate(value -1) + value;
  13. 8048389: 8b 45 08 mov 0x8(%ebp),%eax
  14. 804838c: 83 e8 01 sub $0x1,%eax
  15. 804838f: 89 04 24 mov %eax,(%esp)
  16. 8048392: e8 dd ff ff ff call 8048374 <iterate>
  17. 8048397: 8b 55 08 mov 0x8(%ebp),%edx
  18. 804839a: 01 c2 add %eax,%edx
  19. 804839c: 89 55 fc mov %edx,0xfffffffc(%ebp)
  20. 804839f: 8b 45 fc mov 0xfffffffc(%ebp),%eax
  21. }
  22. 80483a2: c9 leave
  23. 80483a3: c3 ret
Copyright © Linux教程網 All Rights Reserved