ubuntu下编写C语言程序
目錄
一.gcc編譯C語言程序
二.makefile編譯C語言程序
三.編譯過程中遇到的問題
題目:編寫一個主程序文件main1.c和一個子程序文件sub1.c,有如下要求:子程序sub1.c包含一個算術運算函數float x2x(int a,int b),此函數功能為對兩個輸入整型參數做某個運算,將結果做浮點數返回;主程序main1.c定義并賦值兩整型變量,然后調用函數x2x,將x2x的返回結果printf出來。(1)請在ubuntu系統中用gcc命令行方式編譯主程序main1.c并運行;(2)請在windows系統下用你熟悉的編譯工具編譯主程序main1.c并運行;(3)在ubuntu系統下用makefile方式編譯主程序。
一.gcc編譯c語言程序
1.用vim創建main1.c文件:
2.進入vim編輯器然后輸入"i"進入編輯模式,main1.c主程序的代碼內容如下:
3.主程序的代碼完成后按Esc鍵返回普通模式,并在命令行中輸入“:wq"并回車,這樣能夠退出并保存主程序的vim編輯界面
4.用vim創建sub1.c文件:
5.進入vim編輯器然后輸入"i"進入編輯模式,sub1.c子程序的代碼內容如下:
6.子程序的代碼完成后按Esc鍵返回普通模式,并在命令行中輸入“:wq"并回車,這樣能夠退出并保存子程序的vim編輯界面
7.使用gcc轉化為可執行文件:
注意:gcc 編譯文件的具體過程是:源文(.c)---->目標文件(.o)---->可執行文件
8.運行生成的main1可執行文件:
9.運行結果如下所示:
10.windows下用IDE執行相同的C程序,結果如下所示:
二.makefile編譯C語言程序
1.用vim創建makefile文件
2.進入vim編輯器然后輸入"i"進入編輯模式,makefile程序的代碼內容如下:
3.同樣地,按Esc退出編輯模式,并在命令行處輸入":wq"再回車以保存并退出vim編輯界面
4.輸入make:
5.然后會得到makefile的運行結果:
6.再輸入makefile中all的可執行文件:
7.最后得到程序的運行結果:
三.編譯過程中遇到的問題
原因:分隔符要使用Tab鍵,而不是自行輸入空格
原因:命名的all文件與現目錄中的文件重名
解決方法:在makefile文件中加入“.PHONY:all"
3
原因:重復定義了某一函數,本例中顯示的是:“x2x"函數
通過搜集一些資料,看到有如下解釋可以幫助我們很好地理解:
“一般在.h文件中應以一個變量或函數聲明時,在其他文件中只要包含了這個.h文件,編譯的時候就會獨立被編譯器解釋,然后每個.c文件會產生獨立的標識符和符號表,所以上述代碼在單獨編譯的時候不會報錯,語法是合法的。但是,最后在編譯器鏈接的時候,就會將工程中的所有符號整合在一起,由于文件中有重復的變量或函數,于是就會出現重復定義的錯誤,系統給你的提示就是:multiple definiton of ‘xx’”
解決方法:在主程序中不再引用子程序,而是直接定義在子程序中被引用的方法即可
總結
以上是生活随笔為你收集整理的ubuntu下编写C语言程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 详解 Python qrcode 二维码
- 下一篇: [Vue][面试]你怎么理解vue中的d