當前位置:首頁 » 編程軟體 » linux下gcc編譯pdf

linux下gcc編譯pdf

發布時間: 2022-08-15 12:51:44

linux系統下的gcc編譯問題

gcc 簡單使用方法。
gcc -o application hello.c 將hello.c編譯生成application程序。
./application 就可以了。

gcc -o app main.c 1.c -g -Wall
-g 可調試, -Wall 顯示代碼中的警告。

⑵ 在Linux環境下如何安裝GCC編譯器

這一堆下來比較復雜,三兩句說不清的。以後問問題不要一下問太多,哪有人會為你一個人服務回答呀。幾句話說完的人也是在忽悠。我也只能簡單說說:
1、安裝GCC算是比較復雜的了,通常初學者很難明白。你要下載很多東西全安裝上才能用,它都是一個包一個包的,而且有的包你不想下也行。你要下載的通常會是以下幾個
gcc-v.rpm或tar.gz,最好不要下tar.gz。v是版本的意思。
gcc-core-v.rpm
gcc-g++-v.rpm
libstdc++6-v.rpm
libstdc++6-devel-v.rpm
先安裝上core再安裝別的就可以了。以上幾個的v 版本一定要一樣。
你也可以安裝上gdb
有時你還要再安裝上make-v.rpm,這個版本和上面的不是一起的。
是不是很難啊!:)呵呵
2、安裝硬體驅動。通常是Linux Distribution已經有了的,還有就是自己安裝的。安裝驅動如果手上沒有現成的,你就得自己去相應硬體廠商網站下載相應的驅動安裝了。這個也是要用rpm的包。你用的是Redhat,而且是VM虛擬機,所以你就用不著安裝什麼驅動了。
3、上網功能,通常你那個版本的Red hat沒有撥號軟體,你可以去下載個rp-pppoe安裝,再配置下就OK了,不過再針對你的系統是VM和Redhat,這個你也用不著了,你可以用VM的網橋或nat上網,這也是很不錯的。你還可以通過共享上網給你的LinuxVM,加上你的route。
我認為最好的方法是nat,不過你要設置好網卡IP的。Redhat里/etc/sysonf/network里有個網卡設置文件。
這個網卡的IP和你的VM有關,最好IP設置成DHCP的。其它的自己研究下吧。
4、與Windows進行文件互傳。有幾個方法,一個是安裝VM的Linux.iso進去,一個是通過FTP,還有一個是samba
5、這個是一個警告,在你進入系統前檢測的一個警告,和你的VM有關。你可能是Redhat不是你自己裝的,從別的地方來的吧。不過應該可以用。只是系統文件有變化。

⑶ linux下用gcc編譯程序的一些疑問

你這個問題不是許可權不夠就是沒有編好.pro或者makefile文件
.o是在make這步之後
.exe是在make install以後
gdb是調試.exe的
.a是匯編文件
你學的是QT嘛??

⑷ linux下用gcc編譯c出現的一些問題,請指教

你做 make 的時候,它會用預先設計好的命令來編譯,連接源代碼.你現在直接 "gcc pdf2swf.c" 就是假定整個程序只有這么一個源文件,沒有非標准庫.估計不大可能.很明顯,源文件至少還有一個 init.c.

既然你已經能做 configure, make 和 make install,不知道為什麼還要 gcc pdf2swf.c?

要用 gdb, make 的時候就必須帶有 debug 信息, g++ 是 -g, gcc 不太清楚, 打 gcc --help 查一下. 另外, make 做完後,源文件不能刪掉/移動,否則 gdb 就找不到了.

------------------

configure 會生成一個 Makefile, 打開後找 CCFLAG (通常是這個變數), 加上 -g 後再做 make 應該可以產生 debug 信息.你可以試試看.

⑸ linux怎麼用gcc編譯

ctrl +alt+t
給分哦 求採納 哈哈

⑹ 請問 linux下gcc編譯.c文件出現undefined reference to `stop'的錯誤是為什麼stop為自定義函數

~~~~這個沒記錯的話是鏈接的錯誤
跟include應該沒關系(當然還是建議你加上-c參數只編譯不鏈接看看還有沒有錯)

然後就是你的stop是定義在同一個文件里的么?
如果不是的話就要把兩個文件一起編譯(其實是一起鏈接)(你應該沒有吧stop函數編成一個庫吧~~~)

如果是的話那最好查一下參數類型寫對沒有,然後就是大小寫是不是對的,

如果還不行的話麻煩把代碼貼上來方便查錯

⑺ 關於在linux下用gcc編譯頭文件的問題。

我用一個例子來告訴你怎麼樣在 C++ 里使用C的頭文件/函數。

比方說我有一個C的頭文件叫 c.h, C的源碼文件叫 c.c,內容分別是

c.h:
#ifndef _ASDFD_INCLUDED_
#define _ASDFD_INCLUDED_

#include <stdio.h>

extern int test(int a);

#endif

c.c:
#include "c.h"

int test(int a)
{
printf("A = %d\n", a);
return a*a;
}

現在我想在c++中使用c.c中提供的函數test(),我的c++文件名字叫 a.cpp,那麼裡面跟C有關的部分就要用 extern "C" {} 大括弧括起來,看看我的
a.cpp:
#include <iostream>
using namespace std;

extern "C"
{
#include "c.h"
}

int main()
{
int b = 12;

b = test(b);

cout<<"b = "<<b<<endl;
return 0;
}

看到了吧,#include "c.h" 被 extern "C" {}括起來了。

然後是如何編譯,先把C文件編出目標文件(.o)來
gcc -c c.c
你會看到生成了 c.o,其實,有目標文件就夠了,如果你一定要做成(靜態/動態)庫文件,也是可以的,不過我這里就不深入了,做成庫和直接用目標文件對解決你的問題沒有任何區別。

然後再編譯C++文件,也就是我的 a.cpp
g++ -o hello a.cpp c.o
看到了吧,我在編譯 a.cpp 的時候把C生成的 c.o也加上了。 然後生成 可執行的 hello, 運行
./hello
就可以看到
A = 12
b = 144

關於創建靜態庫,假定你有3個C文件, a.c, b.c, c.c 提供了你C++要用到的介面,那麼可以把這三個C文件編譯出來的目標文件放到一個庫文件里供C++使用,方法為

先編譯出目標文件
gcc -c a.c b.c c.c

這時候你應該看到有 a.o b.o c.o了

然後創建庫文件
ar cr libtest.a a.o b.o c.o
這三個目標文件就放入 libtest.a 這個靜態庫中了,然後編譯C++程序 (你的C++程序應該已經按照我前面說的用 extern "C" 把C的介面都括起來了),假定你的 libtest.a 放在 /home/aaa/lib下

g++ -o my.exe my.cpp -L/home/aaa/lib -ltest

就會生成可執行文件 my.exe了。

⑻ 我在linux下寫了個程序,怎麼用gcc編譯

gcc是一個編譯器,qt是一個界面編程工具,兩者是不能比的。

linux下編譯c程序必然要用到gcc編譯器,而qt則是用來開發界面程序的,類似windows下微軟的mfc,你要在linux下寫程序,必然的要會使用gcc對你的程序進行編譯,至於qt只是個基於C++的界面程序開發工具,覺得以後用到就學一下,用不到就算了。

我在和你說一遍,gcc只是一個編譯器。
你的意思是linux下的c/c++集成開發環境吧,anjuta,eclipse等等都可以,但他們只是提供了開發環境,編譯器還是用的gcc。

⑼ linux 系統下的gcc 編譯問題

#hello.h
#hello.c
這兩句話不要放在文件裡面。要放的話可以用//hello.h或/*hello.h*/這樣的方式注釋,#號在linux shell裡面可以用作注釋。在C語言里就不是這個了。把這個換掉,我試過了沒有問題了。

⑽ Linux中gcc編譯器如何使用

2004年4月20日最新版本的GCC編譯器3.4.0發布了。目前,GCC可以用來編譯C/C++、FORTRAN、java、OBJC、ADA等語言的程序,可根據需要選擇安裝支持的語言。GCC 3.4.0比以前版本更好地支持了C++標准。本文以在Redhat Linux上安裝GCC3.4.0為例,介紹了GCC的安裝過程。

安裝之前,系統中必須要有cc或者gcc等編譯器,並且是可用的,或者用環境變數CC指定系統上的編譯器。如果系統上沒有編譯器,不能安裝源代碼形式的GCC 3.4.0。如果是這種情況,可以在網上找一個與你系統相適應的如RPM等二進制形式的GCC軟體包來安裝使用。本文介紹的是以源代碼形式提供的GCC軟體包的安裝過程,軟體包本身和其安裝過程同樣適用於其它Linux和Unix系統。

系統上原來的GCC編譯器可能是把gcc等命令文件、庫文件、頭文件等分別存放到系統中的不同目錄下的。與此不同,現在GCC建議我們將一個版本的GCC安裝在一個單獨的目錄下。這樣做的好處是將來不需要它的時候可以方便地刪除整個目錄即可(因為GCC沒有uninstall功能);缺點是在安裝完成後要做一些設置工作才能使編譯器工作正常。在本文中我採用這個方案安裝GCC 3.4.0,並且在安裝完成後,仍然能夠使用原來低版本的GCC編譯器,即一個系統上可以同時存在並使用多個版本的GCC編譯器。

按照本文提供的步驟和設置選項,即使以前沒有安裝過GCC,也可以在系統上安裝上一個可工作的新版本的GCC編譯器。

1. 下載

在GCC網站上()或者通過網上搜索可以查找到下載資源。目前GCC的最新版本為 3.4.0。可供下載的文件一般有兩種形式:gcc-3.4.0.tar.gz和gcc-3.4.0.tar.bz2,只是壓縮格式不一樣,內容完全一致,下載其中一種即可。

2. 解壓

根據壓縮格式,選擇下面相應的一種方式解包(以下的「%」表示命令行提示符):

% tar xzvf gcc-3.4.0.tar.gz
或者
% bzcat gcc-3.4.0.tar.bz2 | tar xvf -

新生成的gcc-3.4.0這個目錄被稱為源目錄,用${srcdir}表示它。以後在出現${srcdir}的地方,應該用真實的路徑來替換它。用pwd命令可以查看當前路徑。

在${srcdir}/INSTALL目錄下有詳細的GCC安裝說明,可用瀏覽器打開index.html閱讀。

3. 建立目標目錄

目標目錄(用${objdir}表示)是用來存放編譯結果的地方。GCC建議編譯後的文件不要放在源目錄${srcdir]中(雖然這樣做也可以),最好單獨存放在另外一個目錄中,而且不能是${srcdir}的子目錄。

例如,可以這樣建立一個叫 gcc-build 的目標目錄(與源目錄${srcdir}是同級目錄):

% mkdir gcc-build
% cd gcc-build

以下的操作主要是在目標目錄 ${objdir} 下進行。

4. 配置

配置的目的是決定將GCC編譯器安裝到什麼地方(${destdir}),支持什麼語言以及指定其它一些選項等。其中,${destdir}不能與${objdir}或${srcdir}目錄相同。

配置是通過執行${srcdir}下的configure來完成的。其命令格式為(記得用你的真實路徑替換${destdir}):

% ${srcdir}/configure --prefix=${destdir} [其它選項]

例如,如果想將GCC 3.4.0安裝到/usr/local/gcc-3.4.0目錄下,則${destdir}就表示這個路徑。

在我的機器上,我是這樣配置的:

% ../gcc-3.4.0/configure --prefix=/usr/local/gcc-3.4.0 --enable-threads=posix --disable-checking --enable--long-long --host=i386-redhat-linux --with-system-zlib --enable-languages=c,c++,java

將GCC安裝在/usr/local/gcc-3.4.0目錄下,支持C/C++和JAVA語言,其它選項參見GCC提供的幫助說明。

5. 編譯

% make

這是一個漫長的過程。在我的機器上(P4-1.6),這個過程用了50多分鍾。

6. 安裝

執行下面的命令將編譯好的庫文件等拷貝到${destdir}目錄中(根據你設定的路徑,可能需要管理員的許可權):

% make install

至此,GCC 3.4.0安裝過程就完成了。

6. 其它設置

GCC 3.4.0的所有文件,包括命令文件(如gcc、g++)、庫文件等都在${destdir}目錄下分別存放,如命令文件放在bin目錄下、庫文件在lib下、頭文件在include下等。由於命令文件和庫文件所在的目錄還沒有包含在相應的搜索路徑內,所以必須要作適當的設置之後編譯器才能順利地找到並使用它們。

6.1 gcc、g++、gcj的設置

要想使用GCC 3.4.0的gcc等命令,簡單的方法就是把它的路徑${destdir}/bin放在環境變數PATH中。我不用這種方式,而是用符號連接的方式實現,這樣做的好處是我仍然可以使用系統上原來的舊版本的GCC編譯器。

首先,查看原來的gcc所在的路徑:

% which gcc

在我的系統上,上述命令顯示:/usr/bin/gcc。因此,原來的gcc命令在/usr/bin目錄下。我們可以把GCC 3.4.0中的gcc、g++、gcj等命令在/usr/bin目錄下分別做一個符號連接:

% cd /usr/bin
% ln -s ${destdir}/bin/gcc gcc34
% ln -s ${destdir}/bin/g++ g++34
% ln -s ${destdir}/bin/gcj gcj34

這樣,就可以分別使用gcc34、g++34、gcj34來調用GCC 3.4.0的gcc、g++、gcj完成對C、C++、JAVA程序的編譯了。同時,仍然能夠使用舊版本的GCC編譯器中的gcc、g++等命令。

6.2 庫路徑的設置

將${destdir}/lib路徑添加到環境變數LD_LIBRARY_PATH中,最好添加到系統的配置文件中,這樣就不必要每次都設置這個環境變數了。

例如,如果GCC 3.4.0安裝在/usr/local/gcc-3.4.0目錄下,在RH Linux下可以直接在命令行上執行或者在文件/etc/profile中添加下面一句:

setenv LD_LIBRARY_PATH /usr/local/gcc-3.4.0/lib:$LD_LIBRARY_PATH

7. 測試

用新的編譯命令(gcc34、g++34等)編譯你以前的C、C++程序,檢驗新安裝的GCC編譯器是否能正常工作。

8. 根據需要,可以刪除或者保留${srcdir}和${objdir}目錄。

熱點內容
linux安全運維 發布:2025-02-07 11:14:19 瀏覽:734
阿里雲集群伺服器 發布:2025-02-07 11:12:38 瀏覽:451
如何選擇家庭最佳配置 發布:2025-02-07 11:06:50 瀏覽:87
javatomcat伺服器搭建伺服器 發布:2025-02-07 10:55:22 瀏覽:622
vcenter存儲器集群 發布:2025-02-07 10:54:31 瀏覽:583
咖啡的腳本 發布:2025-02-07 10:46:18 瀏覽:520
nsftp速度 發布:2025-02-07 10:30:58 瀏覽:431
存儲過程ifor 發布:2025-02-07 10:25:28 瀏覽:434
命令行執行oracle腳本文件命令行 發布:2025-02-07 10:14:49 瀏覽:96
ibook安卓怎麼下 發布:2025-02-07 10:12:13 瀏覽:693