針對shell
1、添加運行許可權chmod 755 filename;
2、./filename 開始執行該程序;
3、如果想查看運行過程可以這樣:sh -x filename
4、如果要每次開機都運行,可以把該文件的絕對路徑添加到/etc/rc.local文件中。
C程序
1、查看安裝gcc編譯器和相關程序沒有,
2、gcc main.c -o filename;
3、./filename
python程序
1、安裝python程序;
2、添加運行許可權(同上)
3、直接執行程序;./pythonfilename
其他的就不知道了。
② 如何在linux下編譯,執行c程序
1.編譯單個源文件
[例如]在屏幕上列印"Hello,Linux."
[源代碼]#include<stdio.h
#include<stdlib.h
int main(int argc,char **argv){printf("Hello,Linux.\n");exit(0);}將源文件保存為hello.c,開始進行編譯
$gcc -o hello hello.c
編譯成功完成後,在當前路徑下,生成一個名為hello的文件,然後執行
$./hello在屏幕上,你將會看到列印結果:Hello,Linux.
說明:在默認情況下,編譯成功完成後,會在當前路徑下,生成一個名為a.out的文件,然後執行$./a.out便可列印結果,但通常可以通過選項-o來指定自己的可執行程序名稱;
2.編譯多個源文件
3.使用外部函數庫
4.使用共享函數庫和靜態函數庫5.gcc選項詳細描述
③ linux中如何編譯c文件
用gcc編譯器編譯c文件,先下載安裝一個gcc編譯器(如果已有則忽略),然後在命令框輸入
gcc (文件名).c -o (可執行文件名).o
④ linux終端下如何進行C語言編譯
1、首先在linux下判斷是否安裝gcc編譯器,直接執行:gcc -v,判斷是否安裝gcc。
⑤ 如何編譯linux源代碼
首先uname -r看一下你當前的linux內核版本
1、linux的源碼是在/usr/src這個目錄下,此目錄有你電腦上各個版本的linux內核源代碼,用uname -r命令可以查看你當前使用的是哪套內核,你把你下載的內核源碼也保存到這個目錄之下。
2、配置內核 make menuconfig,根據你的需要來進行選擇,設置完保存之後會在當前目錄下生成.config配置文件,以後的編譯會根據這個來有選擇的編譯。
3、編譯,依次執行make、make bzImage、make moles、make moles
4、安裝,make install
5、.創建系統啟動映像,到 /boot 目錄下,執行 mkinitramfs -o initrd.img-2.6.36 2.6.36
6、修改啟動項,因為你在啟動的時候會出現多個內核供你選擇,此事要選擇你剛編譯的那個版本,如果你的電腦沒有等待時間,就會進入默認的,默認的那個取決於 /boot/grub/grub.cfg 文件的設置,找到if [ "${linux_gfx_mode}" != "text" ]這行,他的第一個就是你默認啟動的那個內核,如果你剛編譯的內核是在下面,就把代表這個內核的幾行代碼移到第一位如:
menuentry 'Ubuntu, with Linux 3.2.0-35-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 9961c170-2566-41ac-8155-18f231c1bea5
linux/boot/vmlinuz-3.2.0-35-generic root=UUID=9961c170-2566-41ac-8155-18f231c1bea5 ro quiet splash $vt_handoff
initrd/boot/initrd.img-3.2.0-35-generic
}
當然你也可以修改 set default="0"來決定用哪個,看看你的內核在第幾位,default就填幾,不過我用過這種方法,貌似不好用。
重啟過後你編譯的內核源碼就成功地運行了,如果出現問題,比如滑鼠不能用,usb不識別等問題就好好查查你的make menuconfig這一步,改好後就萬事ok了。
最後再用uname -r看看你的linux內核版本。是不是你剛下的那個呢!有沒有成就感?
⑥ linux下怎樣編譯程序
進入終端,用cd 命令切換到c文件的目錄
編譯命令:gcc -o exec_file (可執行文件名) soucre_file.c(源文件)
然後 用命令 ./exec_file 運行
更高級的是用make 工具,自動編譯
⑦ linux編譯內核錯誤!!
在這些高版本的RedHat Linux上,我們如果需要定製內核的話,沒有直接的源代碼rpm可以安裝,只能通過kernel.org下載的tar.gz的包手工安裝,或者通過kernel-*.src.rpm編譯出kernel-source包再來安裝。後面一種方法可以享受到RedHat針對內核的某些參數和代碼的優化,因此對使用RedHat發行版特別是企業版本的,是有一定好處的。
但是目前很多人至今分不清內核,內核開發,內核源代碼一些包之間的關系,因此在編譯內核的時候經常走彎路,同時RedHat官方對於如果得到kernel-source也沒有明確的指示,導致很多人不得要領。
首先認清楚各rpm包的內容和用途
kernel-*.rpm ------------- 內核二進制包,沒有的話系統都起不來
kernel-sourcecode-*.rpm------------------- 內核源代碼包,安裝到/usr/src/linux-*下面的,包含內核源代碼,編譯內核必須(當然是不考慮用kernel.tar.gz編譯的情況),但高版本RedHat Linux不再提供此rpm,原因參見官方Release Note,這篇文章的最終目的就是要我們自己把這個包搞出來。
kernel-devel-*.rpm----------------內核開發包,安裝到/usr/src/kernels,用於內核模塊開發,組織形式跟內核源代碼包類似,包含了部分內核源代碼。注意很多人誤認為這個就是內核源代碼包,直接拿它來編譯內核,當然不可能成功。這個包只是用於內核模塊一級開發,例如驅動程序等,雖然也可以make menuconfig make dep等,但make bzImage是不可能成功的,因為缺失了核心源代碼。
kernel-*.src.rpm---------------RedHat提供的用於建立rpm的源代碼包,安裝到/usr/src/redhat中,使用rpmbuild可以從這個包中build出上面所說的所有包。
現在就來從src.rpm編譯出上面的所有的包,除了sourcecode這個包其他的包都可以在不用修改任何地方的情況下直接rpmbuild出來,唯有sourcecode這個比較麻煩,一定要按照下面的步驟來做,我以RedHat AS4 所帶的版本為例,其他版本相同。
#首先安裝src.rpm
rpm -ivh kernel-2.6.9-5.EL.src.rpm
#進入相應目錄,要修改spec文件
cd /usr/src/redhat/SPECS
vi kernel-2.6.spec
#主要修改如下地方:
1,define buildsource 0------------我的這個在第8行,改為1,這就是為什麼沒有源代碼包的原因,因為默認不生成源代碼包
2, Requires: qt-devel, gtk2-devel readline-devel ncurses-devel-------我的在572行,如果沒用用X的話,把這句注釋掉,這樣編譯出來的包就不依賴於X-window的某些包,因為內核配置是可以make xconfig的,所以默認依賴X-window,我沒裝X-window,因此這個就去掉了。
#保存退出
touch /etc/beehive-root
#這句命令非必須,如果不做的話,最後編譯出來的包都會變成kernel-*.*-root.rpm,多了個root,據說是為了標示包的編譯人的,如果touch了這個文件,就沒有這個問題了,命名和官方rpm一樣。
rpmbuild -ba --target=i686 ./kernel-2.6.spec
#編譯i686平台的所有包,這樣上面介紹的所有包都會生成,或者換成rpmbuild -bb --target=i686 ./kernel-2.6.spec只編譯非src.rpm。
#所有包就會生成到/usr/src/redhat/RPMS/i686下面
#如果只需要sourcecode而並非所有rpm包,那在修改spec文件時還要修改如下行:
48 %ifarch noarch
49 %define builddoc 1
50 %define buildsource 0----------------這里0修改為1
在編譯的時候使用rpmbuild -ba --target=noarch ./kernel-2.6.spec,這樣僅僅編譯soucecode和doc包,會節省很多時間。
注意,此篇文章所講所有內容僅適用於使用2.6內核的新版本RedHat Linux,2.4版本內核代碼組織方式不同,不適用此文章。
以上這篇文章取自互聯網,我忘了出處,尊敬作者.
⑧ linux怎麼編譯安裝
1、這么說有兩個意思,編譯安裝linux或者要在linux編譯安裝軟體
2、如果從0編譯安裝linux,建議你讀LFS文檔
3、如果要在linux編譯安裝軟體,每種軟體都會提供相關的文檔,先搞清楚佐料再做飯
4、例如編譯安裝nginx,依賴如下
pcre-8.13.tar.gz
zlib-1.2.5.tar.bz2
openssl-1.0.1i.tar.gz
nginx-1.10.1.tar.gz
5、例如編譯安裝mysql
cmake-2.8.8.tar.gz
mysql-5.6.12.tar.gz
⑨ linux 如何運行編譯程序
gcc有多達100多個參數,現介紹常用的幾個。如果對其他參數也有興趣,可以參考:man gcc
預先處理選項
-E: 只對文件進行預處理,輸出結果到標准輸出
-C: 告訴預處理器不要丟棄注釋.配合`-E『選項使用.-P: 告訴預處理器不要產生`#line'命令.配合`-E'選項使用.
-v: 顯示正在使用的gcc的版本
常用編譯選項
-c: 將源程序編譯為目標代碼但並不做鏈接的工作,不生成最終的可執行文件,只生成一個與源文件文件名相同的以.o為後綴的目標文件。
-S:將遠程序編譯為一個後綴為.s的匯編語言文件,不會生成可執行文件
-x:強制編譯器用指定的語言編譯器來編譯某個源文件
gcc -x c++ test.c 表示強制用C++編譯器來編譯c程序
-static: 強制連接靜態庫,運行時不依賴動態庫
-share: 編譯時盡量使用動態庫
-o: 指定生成的可執行文件名,如果沒有該選項,如果生成可執行文件,默認文件名為a.out
編譯路徑選項
-i : 指定特定頭文件
gcc –c -i /home/zry/test.h test.c
-I<DIR>:依賴選項,指定頭文件路徑
Linux下大多數函數將頭文件放在/usr/include目錄下,如果需要指定其他路徑,可以使用該選項
gcc –I/home/zry/include –c test.c 添加/home/zry/include到查找路徑
-L<DIR> : 指定庫文件搜素路徑,用法同上
-l<庫名>:指定特定庫文件
gcc –lapp –c test.c
Linux的庫文件有一個約定,即以lib開頭,-lapp表示連接libapp.so庫文件
目標生成選項
-shared: 生成動態庫
gcc –shared libtest.so -i /home/zry/test.h test.c
生成靜態庫需要ar命令,後面講解
-fPIC: 生成可用於動態庫的位置獨立代碼。所有的內部定址均通過全局偏移表完成。
-ansi:支持符合ANSI標準的C程序.
該選項就會關閉GNU C中某些不兼容ANSI C的特性,例如asm, inline和 typeof關鍵字以及諸如unix和vax這些表明當前系統類型的預定義宏。
__asm__, __extension__, __inline__和__typeof__仍然有效
使用`-ansi'選項的時候,預處理器會預定義一個__STRICT_ANSI__宏.有些頭文件 關注此宏,以避免聲明某些函數,或者避免定義某些宏,這些函數和宏不被ANSI標准調用;這樣就不會干擾在其他地方使用這些名字的程序了.
fno-asm:此選項實現ansi選項的功能的一部分,它禁止將asm,inline和typeof用作關鍵字。
-fno-strict-prototype:只對g++起作用,使用這個選項,g++將對不帶參數的函數,都認為是沒有顯式的對參數的個數和類型說明,而不是沒有參數.而gcc無論是否使用這個參數,都將對沒有帶參數的函數,認為沒有顯式說明的類型
-fthis-is-varialble:就是向傳統c++看齊,可以使用this當一般變數使用
-fcond-mismatch:允許條件表達式的第二和第三參數類型不匹配,表達式的值將為void類型
-funsigned-char:
-fno-signed-char:
-fsigned-char:
-fno-unsigned-char:
這四個參數是對char類型進行設置,將char類型設置unsigned char(前兩個參數)或者 signed char(後兩個參數)
-imacros file: 將file文件的宏,擴展到gcc/g++的輸入文件,宏定義本身並不出現在輸入文件中
-Dmacro: 相當於C語言中的#define macro
-Dmacro=defn: 相當於C語言中的#define macro=defn
-Umacro: 相當於C語言中的#undef macro
-undef: 取消對任何非標准宏的定義
-M: 生成文件關聯的信息。包含目標文件所依賴的所有源代碼
-MM: 和M一樣,但是它將忽略由#include<file>造成的依賴關系。
-MD: -M相同,但是輸出將導入到.d的文件裡面
-MMD: 和-MM相同,但是輸出將導入到.d的文件裡面
警告選項
fsyntax-only:檢查程序中的語法錯誤,但是不產生輸出信息.
-w:禁止所有警告信息.
-Wno-import: 禁止所有關於#import的警告信息.
-pedantic:打開完全遵從ANSI C標准所需的全部警告診斷;拒絕接受採用了被禁止的語法擴展的程序.
-Werror:將所有警告轉換為錯誤
Werror選項要求GCC將所有警告當作錯誤進行處理。
-Wall: 顯示所有警告信息