unix下c編程
A. 怎樣利用CC命令在Unix上編譯C程序
在 UNIX系統下面,使用 cc 命令最常用的選項主要有如下幾個(以 my_prog.c 為例進行說明)
$cc -c my_prog.c <cr> (-c 選項表示只編譯、產生中間文件,不進行鏈接、並產生最終的可執行程序)
$cc my_prog.c <cr>(編譯、鏈接,並產生預設的可執行程序。預設的可執行文件名為:a.out)
$cc -o my_runfile my_prog.c <cr>(-o 選項用於生成用戶指定的可執行程序名,代替預設的可執行文件名:a.out。這里的可執行文件名是:my_runfile)
至於說還有很多其他選項,例如:-L系統庫名字(*.LIB)等,那就需要在平時的編程過程中去體會了。
另外,如果是在 linux 系統下面進行 C 語言的開發,使用的是 gcc 編譯器。其選項和 cc 編譯器相同。
B. 求教一個UNIX環境下c語言編程的問題:
從你的問題來看,while(1){}主要問題出在while的這個上面。
1、當while這個循環中有printf或sleep 的時候gcc在編譯的時候就不會對其做優化處理,當這時候你運行程序時,程序會阻塞這while這里
2、當你把WHILE中的printf or sleep去掉時,這時while 中是個空循環,當gcc在編譯的時候就會對其做優化處理,這里怎麼處理的我一時也不太明白。這時你運行程序的時候就不會阻塞在這個while中。
所以,你這問題可以說是阻塞問題,也可以說是gcc 優化問題。
如果想要做到aaa和bbb交替列印,看樣子你要改變程序的結構。
C. 一道unix 下C語言編程疑惑,希望高手幫解釋下
1、我直接粘了你的代碼(我的系統是Ubuntu10.04),然後
$gcc -o xxx xxx.c //編譯通過
$./xxx //也可以執行
出錯的話,說明你應該不是用的Linux系統吧,網上給出的原因:
編譯時需要加-lsocket選項
http://faq.csdn.net/read/166652.html
http://jimobit.blog.163.com/blog/static/28325778200981471439881/
不過我很疑惑的是別人都是在寫socket程序時才需要這個選項,你的代碼和socket沒關啊。。。
2、關於fork()函數的調用與返回,可以看看文庫里的這篇文章:
http://wenku..com/view/61067c68011ca300a6c39031.html
D. 如何在Unix 下運行c語言
首先要看是什麼設備
aix和hp的unix編譯還是不一樣的
然後安裝編譯器,和鏈接器,默認的是gcc,我用的xlc
最後使用編譯命令
例如
xlc
-o
文件名.c
生成目標文件
編譯
xlc
文件名
目標文件名.o
鏈接
生成文件
在目錄下執行./文件名
&
程序在後台執行
最好看寫編程基礎書吧
或者mak的語法
會有很大幫助
E. 如何開始unix下c編程的學習
ubuntu是Linux 的一種,Linux 不是 Unix ,是它的類似的操作系統。網路有他們的介紹。
Unix 、Linux 環境下,最佳的GNU 編譯器確實是 gcc,他包含了 C、C++、Objective-C、 Fortran、 Java、 Ada、 Go 語言的編譯功能,相當強大。
emace確實是文本編輯器,確實可以用來編寫源代碼,然後用gcc編譯連接成為可執行程序。
如果只是學習編程的話,用虛擬機確實可以實現要求。至於是否願意安裝一個全新的操作系統,則隨自己的意願。不過如果你確實打算在Linux系統下好好學習編程的話,建議還是安裝一套的好。
F. Linux下的C語言和Unix下的C語言編程有區別嗎
1、unix和linux是操作系統,本身和C語言沒有什麼關系。
但linux和Unix本身是用c語言實現的,現在又以linux為主,
所以能夠研究Linux內核,算是比較高水平的。
2、C語言是可移植的,也就是用c的庫函數編程。
帶著環境的像linux下的c,unix下的c是調用系統提供的系統調用,linux和unix差別很小,但是不同產品之間會有不同的。現在有一個標准就是為了結決unix的可移植性,POSIX。
G. 在unix上用什麼編譯c語言寫的程序
這個很簡單,看來老兄是linux高手,基本上不會使用win系統,如果你有源代碼的情況下,在windows系統下,雙擊vc++軟體後,新建工程,然後選擇Win32 Console Application,然後再右邊應該有保存的硬碟路徑和輸入工程名,然後根據提示下一步,直道完成,然後再點擊左邊的file view 然後在在你要加入的文件夾內新建文件然後保存成.c的後綴名,就可以把你的源代碼寫進去了,然後找到一個嘆號,點擊它,就編譯運行了,運行時彈出一個dos窗口,就可以看到了。c++完全兼容c語言,vc的編譯環境,可以有api,也就是說編寫窗口程序。比起linux來,就是可以直接在點一個按鈕就行了,省的寫那些命令了。其他的應該不會有太大區別。 點紅色的嘆號是運行,vc把編譯,連接,執行,都分開了,如果點了紅色的嘆號也運行不了,那就說明你vc軟體本身有問題。建議你重新下載一個再試試。
H. unix下C編程,編譯的時候總是提示undefined reference to'fread'
fread 是標准輸入輸出庫中的函數,不同版本的編譯器在默認庫上有所區別。有的不用寫即包含所有常用庫,有的編譯器是零包含的。
unix下c語言編譯器要想使用庫函數,必須對庫進行相關聲明
#include <stdio.h>
fread介紹附上
函數原型
size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;
功 能
從一個文件流中讀數據,最多讀取count個元素,每個元素size位元組,如果調用成功返回實際讀取到的元素個數,如果不成功返回 0。
參 數
buffer
用於接收數據的內存地址,大小至少是size*count位元組.
size
單個元素的大小,單位是位元組
count
元素的個數,每個元素是size位元組.
stream
輸入流
返回值
實際讀取的元素個數.如果返回值與count不相同,則可能文件結尾或發生錯誤.
從ferror和feof獲取錯誤信息或檢測是否到達文件結尾.
I. UNIX下用C語言進行Socket編程和C#Server之間通信如何實現
直接使用UNIX的Socket編程就行。Client的話先使用int
socket(int
domain,int
type,int
protocol)創建一個fd,然後使用int
connect(int
sockfd,struct
sockaddr*addr,sock_tlen)建立連接。然後調用send發送指定數據即可。如果發送數據類型不是一個位元組的話(如int,long),需要注意一下大小端轉化。
J. 在Unix環境下,怎麼運行c 程序
你是什麼unix版本?
如果你機器上裝有C編譯器,比如gcc,把你的程序寫到.c文件中,比如main.c,然後
gcc -o test main.c
然後
./test 就可以執行編譯好的程序了