新聞中心
在Linux上編譯程序是一個很常見的任務,而讓程序自動后臺編譯可以讓我們的工作更加輕松。在本文中,我們將介紹如何在Linux上讓程序自動后臺編譯。

創(chuàng)新互聯(lián)建站服務項目包括麥積網(wǎng)站建設、麥積網(wǎng)站制作、麥積網(wǎng)頁制作以及麥積網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,麥積網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到麥積省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
之一步:設置編譯環(huán)境
在開始之前,我們需要確保我們的操作系統(tǒng)擁有足夠的軟件包和依賴項來支持編譯任務。此外,我們需要設置正確的環(huán)境變量來確保編譯器和鏈接器可以找到它們需要的庫和頭文件。
設置環(huán)境變量的方法可能因不同的Linux發(fā)行版而異。通常,我們需要編輯以下文件:
– /etc/environment
– /etc/profile
– ~/.bashrc
在這些文件中,我們可以添加以下環(huán)境變量:
– PATH:包含我們需要的編譯器和鏈接器的路徑。
– CPATH:包含C語言頭文件的路徑。
– C_INCLUDE_PATH:包含C語言頭文件的路徑。
– CPLUS_INCLUDE_PATH:包含C++語言頭文件的路徑。
– LD_LIBRARY_PATH:包含共享庫的路徑。
當我們完成環(huán)境變量的設置后,我們需要重新啟動我們的終端或重新加載我們編輯的文件。
第二步:安裝自動化構(gòu)建工具
在Linux上有許多工具可以讓我們自動化構(gòu)建任務。以下是其中的一些:
– make:可用于管理大型項目的編譯任務。
– cmake:可用于自動生成makefile。
– ninja:速度更快的自動化構(gòu)建工具。
– scons:用Python編寫的構(gòu)建工具,支持跨平臺編譯。
安裝這些工具的方法可能因不同的Linux發(fā)行版而異。通常,我們可以使用運行以下命令來安裝這些軟件包:
– Debian、Ubuntu:sudo apt-get install make cmake ninja-build scons
– Fedora、Red Hat、CentOS:sudo yum install make cmake ninja-build scons
– Arch:sudo pacman -S make cmake ninja scons
我們也可以從源代碼構(gòu)建這些工具,具體請參閱它們的官方文檔。
第三步:設置自動化構(gòu)建任務
一旦我們安裝了自動化構(gòu)建工具,我們可以使用它們來設置自動化構(gòu)建任務。以下是一個使用make命令的簡單示例:
“`
.PHONY: all
all:
make
“`
在此示例中,我們使用make命令編譯所有文件。我們可以將此代碼片段保存為Makefile文件,并將其存儲在我們的項目根目錄中。
如果我們使用的是其他自動化構(gòu)建工具,我們可以按照其官方文檔設置自動化構(gòu)建任務。
第四步:創(chuàng)建自動化編譯腳本
自動化編譯腳本是一種讓我們在后臺自動編譯程序的工具。以下是一個簡單的bash腳本示例:
“`
#!/bin/bash
while true
do
make
sleep 2
done
“`
在此示例中,我們使用一個while循環(huán),無限編譯我們的程序。這個腳本將一直運行,直到我們手動停止它。我們可以將此代碼片段保存為build.sh文件,并將其存儲在我們的項目根目錄中。
一旦我們創(chuàng)建了自動化編譯腳本,我們需要通過運行以下命令使它可執(zhí)行:
“`
chmod +x build.sh
“`
第五步:運行自動化編譯腳本
要在后臺啟動自動化編譯腳本,我們可以運行以下命令:
“`
./build.sh &
“`
在此命令中,我們在腳本名后添加了一個&符號,以便在后臺運行腳本。我們還可以使用nohup命令來使該腳本在后臺運行:
“`
nohup ./build.sh > build.log 2>&1 &
“`
在此命令中,我們使用nohup命令讓腳本在后臺運行,并將所有輸出寫入build.log文件。&符號告訴Linux將命令放在后臺運行,而2>&1則重定向所有錯誤到標準輸出。
結(jié)論
在Linux上讓程序自動后臺編譯需要按照以下步驟進行操作:
– 設置編譯環(huán)境
– 安裝自動化構(gòu)建工具
– 設置自動化構(gòu)建任務
– 創(chuàng)建自動化編譯腳本
– 運行自動化編譯腳本
這些步驟可以讓我們更輕松地管理我們的編譯任務,并確保我們的程序始終保持最新狀態(tài)。
相關(guān)問題拓展閱讀:
- 如何編寫Linux Daemon后臺程序
如何編寫Linux Daemon后臺程序
守護進程的編程要點 :
1. 在后臺運行。
為避免掛起控制終端將Daemon放入后臺執(zhí)行。方法是在進程中調(diào)用fork使父進程終止,讓Daemon在子進程中后臺執(zhí)行。
if(pid=fork())
exit(0);//是父進程,結(jié)束父進程,子進程繼續(xù)
2. 脫離控制終端,登錄會話和進程組
有必要先介紹一下Linux中的進程與控制終端,登錄會話和進程組之間的關(guān)系:進程屬于一個進程組,進程組號(GID)就是進程組長的進程號(PID)。登錄會話可以包含多個進程組。這些進程組共享一個控制終端。這個控制終端通常是創(chuàng)建進程的登錄終端。
控制終端,登錄會話和進程組通常是從父進程繼承下碰攜來的。我們的目的就是要擺脫它們,使之不受它們的影響。方法是在第1點的基礎上,調(diào)用setsid()使進程成為會話組長:
setsid();
說明:當進程是會話組長時setsid()調(diào)用失敗。但之一點已經(jīng)保證進程不是會話組長。setsid()調(diào)用成功后,進程成為新的會話組長和新的進程組長,并與原來的登錄會話和進程組脫離。由于會話過程對控制終端的獨占性,進程同時與控制終端脫離。
3. 禁止進程重新打開控制終端
現(xiàn)在,進程已經(jīng)成為無終端的會話組長。但它可以重新申請打開一個控制終端??梢酝ㄟ^使進程不再成為會話組長來禁止進程重新打開控制終端:
if(pid=fork())
exit(0);//結(jié)束之一子進程,第二子進程繼續(xù)(第二子進程不再是會話組長)
4. 關(guān)閉打開的文件描述符
進程從創(chuàng)建它的父進程那里繼承了打開的文件描述符。如不關(guān)閉,將會浪費系統(tǒng)資源,造成進程所在的文件系統(tǒng)無法卸下以及引起無法預料的錯誤。按如下方法關(guān)閉它們:
for(i=0;i 關(guān)閉打開的文件描述符close(i);>
5. 改變當前工作目錄
進程活動時,其工作目錄所在的文件系統(tǒng)不能卸下。一般需要將伍攔工作目錄改變到根目錄。對于需要轉(zhuǎn)儲核心,寫運行日志的進程將工作目錄改變到特定目錄如/tmpchdir(“/”)
6. 重設文件創(chuàng)建掩模
進程從創(chuàng)建它的父進程那里繼承了文件創(chuàng)建掩模。它可能修改守護進程所創(chuàng)建的文件的存取位。為防止這一點,將文件創(chuàng)建掩模清除:umask(0);
7. 處理SIGCHLD信號
處理SIGCHLD信號并不是必須的。但對于某些進程,特別是服務器進程往往在請求到來時生成子進程處理請求。如果父進程不等待子進程結(jié)束,子進程將成為 僵尸進程(zombie)從而占用系統(tǒng)資源。如果父進程等待子進程結(jié)束,將增加父進程的負擔,影響服務器進程的并發(fā)性能。在Linux下可以簡單地將 SIGCHLD信號的操作設為SIG_IGN。
signal(SIGCHLD,SIG_IGN);
這樣,笑橘伏內(nèi)核在子進程結(jié)束時不會產(chǎn)生僵尸進程。這一點與BSD4不同,BSD4下必須顯式等待子進程結(jié)束才能釋放僵尸進程。
關(guān)于linux讓程序后臺編譯的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都服務器托管選創(chuàng)新互聯(lián),先上架開通再付費。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)-網(wǎng)站建設,軟件開發(fā)老牌服務商!微信小程序開發(fā),APP開發(fā),網(wǎng)站制作,網(wǎng)站營銷推廣服務眾多企業(yè)。電話:028-86922220
當前標題:如何在Linux上讓程序自動后臺編譯? (linux讓程序后臺編譯)
標題來源:http://m.fisionsoft.com.cn/article/dphoiip.html


咨詢
建站咨詢
