對於使用gcc編譯時,頭文件的搜索路徑可以使用
echo|gcc-E-v-
查看,在結果中有這樣一部份:
#include"..."searchstartshere:
#include<...>searchstartshere:
/usr/lib/gcc/x86_64-linux-gnu/5/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
也就是說,如果沒有指定路徑的話,默認搜索范圍就是這些路徑,並且由命名可以知道
/usr/lib/gcc/x86_64-linux-gnu/5/include
/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed
/usr/include/x86_64-linux-gnu
都不是標准C中的,而是GNU-LINUX的,因此,題主所說的
#include<types.h>//包含的是標准C的types.h位於/usr/include/
#include<sys/types.h>//包含的是GNU-LINUXC頭文件,位於/usr/include/x86_64-linux-gnu/sys
望採納。
② 學C語言編程用Linux的哪個版本好
1、運維和分布式開發可以選擇紅帽版本:紅帽版本主要分為了RHEL和centos,新手學習的時候如果不想太過於折騰,可以直接使用conetos,和RHEL在操作使用層面上完全沒有區別的,只是來源有所區分,分為了開源免費和企業收費知虛漏兩種。國內運維所採用的教材一般都是redhat,所以都是基於RHEL的。細分版本的情況下,初學者可以安裝一個帶有桌面的centots6或者7,都可以。
2、具有生產力的工具可以選擇ubuntu版本:對於生產力版本最大的要求就是穩定了,ubuntu就是非常不錯的選擇,死機崩潰幾乎可以避免了。還可以選擇fedora版本,也是非常不錯的,也具有非常不錯的穩定性,不過整體來說還是ubuntu,各種生產力軟體都適用於它,不用浪費時間找軟體。而且還擁有海量的知識庫,互聯網上可以找到關於ubuntu的一切問題解決方案,非常適合初學者學習。
3、日常使用可以選擇deepin、manjaro版本:相搭爛對於來說更加省心一些。deepin對於從Windows遷移過來的用戶是非常不錯的選擇,高度兼容Windows風格和操作習慣的系統,可以適配Windows下的軟體,可以讓初學者快速融入其中。manjaro版本,擁有所有Linux桌面版本中最大的軟體倉庫,最多適配的桌面環境、最簡單易用的應用管理方式,如果作為家用的情況下,是非常適合的選譽培擇。
③ 在Linux下用C語言編程
4。守護進程的創建
如果你在DOS時代編寫過程序,那麼你也許知道在DOS下為了編寫一個常駐內存的程序我們要編寫多少代碼了.相反如果在Linux下編寫一個"常駐內存"的程序卻是很容易的.我們只要幾行代碼就可以做到. 實際上由於Linux是多任務操作系統,我們就是不編寫代碼也可以把一個程序放到後台去執行的.我們只要在命令後面加上&符號SHELL就會把我們的程序放到後台去運行的. 這里我們"開發"一個後台檢查郵件的程序.這個程序每個一個指定的時間回去檢查我們的郵箱,如果發現我們有郵件了,會不斷的報警(通過機箱上的小喇叭來發出聲音). 後面有這個函數的加強版本加強版本
後台進程的創建思想: 首先父進程創建一個子進程.然後子進程殺死父進程(是不是很無情?). 信號處理所有的工作由子進程來處理.
#include
#include
#include
#include
#include
#include
#include
/* Linux 的默任個人的郵箱地址是 /var/spool/mail/用戶的登錄名 */
#define MAIL "/var/spool/mail/hoyt"
/* 睡眠10秒鍾 */
#define SLEEP_TIME 10
main(void)
{
pid_t child;
if((child=fork())==-1)
{
printf("Fork Error:%s\n",strerror(errno));
exit(1);
}
else if(child>0)
while(1);
if(kill(getppid(),SIGTERM)==-1)
{
printf("Kill Parent Error:%s\n",strerror(errno));
exit(1);
}
{
int mailfd;
while(1)
{
if((mailfd=open(MAIL,O_RDONLY))!=-1)
{
fprintf(stderr,"%s","\007");
close(mailfd);
}
sleep(SLEEP_TIME);
}
}
}
你可以在默認的路徑下創建你的郵箱文件,然後測試一下這個程序.當然這個程序還有很多地方要改善的.我們後面會對這個小程序改善的,再看我的改善之前你可以嘗試自己改善一下.比如讓用戶指定郵相的路徑和睡眠時間等等.相信自己可以做到的.動手吧,勇敢的探險者.
好了進程一節的內容我們就先學到這里了.進程是一個非常重要的概念,許多的程序都會用子進程.創建一個子進程是每一個程序員的基本要求!
④ 關於linux下的c語言編程
從你的提問來看,概念比較混亂:
1.為什麼要使用make?你vim了makefile/Makefile檔案嗎?
2.cd make是轉到「make」目錄(linux中慣用,相當於windows下的文件夾),你都沒建立「make」目錄,自然找不到了。
針對你目前的情況,你可以:
1.基礎
這里不需要用make
gcc -c main.c
gcc -c f1.c
gcc -c f2.c
gcc -o main main.o f1.o f2.o
(如果調用了外部函數,記得加上-lm。這個應該不需要多說吧。。。)
然後./main就可以得到你要的結果了
2.進階
vim makefile
內容如下:
main: main.o f1.o f2.o
gcc -o main main.o f1.o f2.o
(第二行的 gcc 之前是 <tab> 按鍵產生的空白,應該不需要我多解釋吧。。。)
保存退出,再用make去看看吧。
⑤ linux C語言編程gcc和qt學哪個好
gcc是一個編譯器,qt是一個界面編程工具,兩者是不能比的。
linux下編譯c程序必然要用到gcc編譯器,而qt則是用來開發界面程序的,類似windows下微軟的mfc,你要在linux下寫程序,必然的要會使用gcc對你的程序進行編譯,至於qt只是個基於C++的界面程序開發工具,覺得以後用到就學一下,用不到就算了。
我在和你說一遍,gcc只是一個編譯器。
你的意思是linux下的c/c++集成開發環境吧,anjuta,eclipse等等都可以,但他們只是提供了開發環境,編譯器還是用的gcc。
⑥ 在Linux進行C語言編程的時候,程序里使用了mpi或者openmp或者都使用了該怎麼進行編譯執行謝謝
mpi或者openmp
這個,你指的是庫?
如果是的話,編譯時,加上鏈接庫的編譯選項就可以。
比如 gcc -hello.c -o hello -lm -lxml -L/usr/local/lib -lts
-lm 鏈接了math庫
-lxml鏈接了xml庫
-L/usr/local/lib -lts 鏈接了ts庫,ts庫存在目錄/usr/local/lib中