日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

(g linux)

發(fā)布時(shí)間:2023/12/3 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 (g linux) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

linux gcc編譯好C文件后生成.o目標(biāo)文件,但是在執(zhí)行中($./test)出現(xiàn)沒(méi)有那個(gè)文件或目錄,請(qǐng)大神幫忙?

.o文件是不能被執(zhí)行的, c的源碼要經(jīng)過(guò)編譯和鏈接才能生成可執(zhí)行文件,你只是編譯了,沒(méi)有鏈接,這個(gè)文件相當(dāng)于Windows下的test.obj而已。gcc -Wall test.c -o test

linux qt安裝后沒(méi)有g(shù)++?

1.確認(rèn)一下安裝權(quán)限重新安裝

2.確認(rèn)一下安裝目錄沒(méi)有中文

linux下c編程,為什么有些程序用g++就可以編譯,而用gcc時(shí)必須加上-lstdc++呢?

因?yàn)間cc只能編譯C語(yǔ)言編寫的程序,有的程序是用C++寫的,所以編譯的時(shí)候就要使用G++,或者手動(dòng)加上標(biāo)準(zhǔn)C++庫(kù)

Linux的gcc是怎么用的?

在終端中輸入 gcc 文件名 -o 目標(biāo)文件名然后 ./目標(biāo)文件名 就行了,沒(méi)有目標(biāo)文件名,自動(dòng)存為 a執(zhí)行 ./a 就行了。在使用Gcc編譯器的時(shí)候,我們必須給出一系列必要的調(diào)用參數(shù)和文件名稱。GCC編譯器的調(diào)用參數(shù)大約有100多個(gè),其中多數(shù)參數(shù)我們可能根本就用不到,這里只介紹其中最基本、最常用的參數(shù)?! CC最基本的用法是∶gcc   其中options就是編譯器所需要的參數(shù),filenames給出相關(guān)的文件名稱。  -c,只編譯,不連接成為可執(zhí)行文件,編譯器只是由輸入的.c等源代碼文件生成.o為后綴的目標(biāo)文件,通常用于編譯不包含主程序的子程序文件?! ?o output_filename,確定輸出文件的名稱為output_filename,同時(shí)這個(gè)名稱不能和源文件同名。如果不給出這個(gè)選項(xiàng),gcc就給出預(yù)設(shè)的可執(zhí)行文件a.out?! ?g,產(chǎn)生符號(hào)調(diào)試工具(GNU的gdb)所必要的符號(hào)資訊,要想對(duì)源代碼進(jìn)行調(diào)試,我們就必須加入這個(gè)選項(xiàng)?! ?O,對(duì)程序進(jìn)行優(yōu)化編譯、連接,采用這個(gè)選項(xiàng),整個(gè)源代碼會(huì)在編譯、連接過(guò)程中進(jìn)行優(yōu)化處理,這樣產(chǎn)生的可執(zhí)行文件的執(zhí)行效率可以提高,但是,編譯、連接的速度就相應(yīng)地要慢一些。  -O2,比-O更好的優(yōu)化編譯、連接,當(dāng)然整個(gè)編譯、連接過(guò)程會(huì)更慢?! ?Idirname,將dirname所指出的目錄加入到程序頭文件目錄列表中,是在預(yù)編譯過(guò)程中使用的參數(shù)。C程序中的頭文件包含兩種情況∶  A)#include <myinc.h>  B)#include “myinc.h”  其中,A類使用尖括號(hào)(< >),B類使用雙引號(hào)(“ ”)。對(duì)于A類,預(yù)處理程序cpp在系統(tǒng)預(yù)設(shè)包含文件目錄(如/usr/include)中搜尋相應(yīng)的文件,而B類,預(yù)處理程序在目標(biāo)文件的文件夾內(nèi)搜索相應(yīng)文件。 GCC執(zhí)行過(guò)程示例  示例代碼 a.c:  #include <stdio.h>  int main()  {  printf("hellon");  }  預(yù)編譯過(guò)程:  這個(gè)過(guò)程處理宏定義和include,并做語(yǔ)法檢查?! 】梢钥吹筋A(yù)編譯后,代碼從5行擴(kuò)展到了910行。  gcc -E a.c -o a.i  cat a.c | wc -l  5  cat a.i | wc -l  910  編譯過(guò)程:  這個(gè)階段,生成匯編代碼?! cc -S a.i -o a.s  cat a.s | wc -l  59  匯編過(guò)程:  這個(gè)階段,生成目標(biāo)代碼?! 〈诉^(guò)程生成ELF格式的目標(biāo)代碼?! cc -c a.s -o a.o  file a.o  a.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped  鏈接過(guò)程:  鏈接過(guò)程。生成可執(zhí)行代碼。鏈接分為兩種,一種是靜態(tài)鏈接,另外一種是動(dòng)態(tài)鏈接。使用靜態(tài)鏈接的好處是,依賴的動(dòng)態(tài)鏈接庫(kù)較少,對(duì)動(dòng)態(tài)鏈接庫(kù)的版本不會(huì)很敏感,具有較好的兼容性;缺點(diǎn)是生成的程序比較大。使用動(dòng)態(tài)鏈接的好處是,生成的程序比較小,占用較少的內(nèi)存。  gcc a.o -o a  程序運(yùn)行:  ./a  hello編輯本段GCC編譯簡(jiǎn)單例子  編寫如下代碼:  #include <stdio.h>  int main()  {  printf("hello,world!n");  }  執(zhí)行情況如下:  gcc -E hello.c -o hello.i  gcc -S hello.i -o hello.s  gcc -c hello.s -o hello.o  gcc hello.c -o hello  ./hello  hello,world!

總結(jié)

以上是生活随笔為你收集整理的(g linux)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。