搭建Ubuntu下c/c++編譯環境

搭建Ubuntu下C/C++編譯環境

1.       安裝Ubuntu。

2.       安裝gcc

          方法一:

          sudoapt-get  install  build-essential

          安裝完了可以執行

          gcc--version的命令來查看版本,輸出如下:

          gcc(GCC)4.2.3(Ubuntu4.2.3-2ubuntu7)

          Copyright(C)2007FreeSoftwareFoundation,Inc.

          編譯則使用Ubuntu gcc命令。要往下學習首先就得熟悉gcc命令的用法。

          Ubuntugcc命令提供了非常多的命令選項,但並不是所有都要熟悉,初學時掌握幾個常用的就可以了,到後面再慢慢學習其它選項,免得因選項太多而打擊了學習的信心。

          一. 常用編譯命令選項假設源程序文件名爲test.c。

          1. 無選項編譯鏈接

          用法:#gcc test.c

          作用:將test.c預處理、彙編、編譯並鏈接形成可執行文件。這裏未指定輸出文件,默認輸出爲a.out。

          2. 選項 -o

          用法:#gcc test.c -otest

          作用:將test.c預處理、彙編、編譯並鏈接形成可執行文件test。-o選項用來指定輸出文件的文件名。

          3. 選項 -E

          用法:#gcc -E test.c -otest.i

          作用:將test.c預處理輸出test.i文件。

          4. 選項 -S

          用法:#gcc -S test.i

          作用:將預處理輸出文件test.i彙編成test.s文件。

          5. 選項 -c

          用法:#gcc -c test.s

          作用:將彙編輸出文件test.s編譯輸出test.o文件。

          6. 無選項鍊接

          用法:#gcc test.o -otest

          作用:將編譯輸出文件test.o鏈接成最終可執行文件test。

          7. 選項-O

          用法:#gcc -O1 test.c -otest

          作用:使用編譯優化級別1編譯程序。級別爲1~3,級別越大優化效果越好,但編譯時間越長。

          二. Ubuntu gcc多源文件的編譯方法

          如果有多個源文件,基本上有兩種編譯方法:

          [假設有兩個源文件爲test.c和testfun.c]

          1. 多個文件一起編譯

          用法:#gcc testfun.ctest.c -o test

          作用:將testfun.c和test.c分別編譯後鏈接成test可執行文件。

          2. 分別編譯各個源文件,之後對編譯後輸出的目標文件鏈接。

          用法:

          #gcc -ctestfun.c //將testfun.c編譯成testfun.o

          #gcc -ctest.c //將test.c編譯成test.o

          #gcc -otestfun.o test.o -o test //將testfun.o和test.o鏈接成test

          以上兩種方法相比較,第一中方法編譯時需要所有文件重新編譯,而第二種方法可以只重新編譯修改的文件,未修改的文件不用重新編譯。

 

          3.       安裝eclipse

          a)      安裝配置Java(eclipse需要)

          Ubuntu 在安裝時,如同大部分Linux 發行版一樣,都會同時安裝 GNU 版本的 Java。這個 Java 的實用程度太低,尤其對於開發人員來說,是沒有太多用處的。在 Ubuntu 下,安裝 SUN Java 是一件很容易的事情。第一步:

          sudoapt-get install sun-java6-jdk

          安裝完畢之後,選擇默認 java:

          sudo update-alternatives --config java

          然後配置環境變量:

          sudo vim /etc/environment

          在其中添加如下兩行:(不同版本應不同,這裏是java6)

          CLASSPATH=/usr/lib/jvm/java-6-sun/lib
          JAVA_HOME=/usr/lib/jvm/java-6-sun保存退出。

          b)      安裝 Eclipse

          sudo apt-getinstall eclipse-platform

          sudo apt-get install eclipse-pde

          雖然已經這時新安裝的java 已經成爲系統默認的 jvm,但是 Eclipse 並不會用 update-alternative 設置的 jvm 來啓動自身,而使用的是以前的 GNU Java。GNU Java 是 1.4.2 的實現,而且在性能上遠不如 SUN 的實現。爲了讓 Eclipse 利用 SUN Java 啓動,我們還需要繼續配置。首先將 SUN Java 完完全全的設置爲系統的默認 JDK:

          sudo update-java-alternatives -s java-6-sun

          然後編輯 JVM 配置文件:

          sudo vim /etc/jvm

          將文件中的

          /usr/lib/jvm/java-6-sun

          這一行填入到配置塊的頂部。由於 Eclipse 會忽略 Ubuntu 的通用 Java 設置(貌似一個 bug),我們需要繼續編輯 Eclipse 的 java_home 文件:

          sudo vim /etc/eclipse/java_home

          如同上面一樣,將

          /usr/lib/jvm/java-6-sun

          這一行填入到文件的頂部。

          c)      安裝 Eclipse, c/c++插件

          1、啓動eclipse,

          2、選擇Help->InstallNew Software...,在Work with的框框下複製下面的地址: http://download.eclipse.org/releases/galileo

          3、選擇Collaboration->MylynBridge: C/C++ Development,安裝,重啓eclipse。

          4、同上述2、3,選擇ProgrammingLanguages->Eclipse C/C++ Development,都選上吧,現在硬盤不貴的。重啓eclipse,試試吧,有tutorial的。

           備註:有些版本還需要安裝GTK+庫,使用apt-getinstall libgtk2.0*可得到

 

4.       安裝g++

          方法一: 

          sudo apt-get install make gcc g++

          再裝上函數手冊

          sudo apt-get install manpages-dev

          方法二: 

          sudo apt-get install build-essential

          執行完後,完成了gcc,g++,make的安裝。build-essential 是一整套工具,gcc,libc等等

 

5.       虛擬機下共享文件

          Windows和Linux間有很多文件共享的方式,這裏我總結了一下。假設你的Host計算機是Windows,Guest是Linux哈。

          1.利用Samba

          這是我用得最多的方式

          備註:試了一下,比較麻煩

          2.在Linux下配置Apahce

          在Linux下配置Apahce,然後在Windows下通過www方式把Linux下的文件下載下來。這種方式只能把Linux的文件傳到Windows,不能把Windows的文件傳到Linux.

          3.在Linux下配置Ftp

          用vsftp或者wu-ftp都可以,配置成上傳權限的,然後Windows和Linux就可以相互共享文件了。

          4.Windows下配置WWW服務

          用IIS,Apache或者其它的都可以。如果你的Linux只有命令行的話,就用wget命令吧,可以很方便地下載文件。

          5.Windows下配置Ftp

          用serv-u比較簡單

          6.利用Windows的文件共享功能

          比如說你的Windows的IP爲192.168.0.1,共享了一個叫share的目錄,那麼就可以用下列命令

          mount -t smbfs //192.168.0.1/share /mnt -o username=user%passwd

          或者smbmount//192.168.0.1/share /mnt -o username=user%passwd(用這個命令要安samba哦)

          7.用vmware tools工具

          SharedFolders是Vmware4 的一個新功能,更加方便了在Host,Guest操作系統間共享文件。但是使用前要安裝vmwaretools.

          點擊setting->vmwaretools install

          mount /dev/cdrom /mnt/cdrom

          cd /mnt/cdrom

          裏面有一個vmwaretools的tar包,解開執行vmware-tools-install.pl腳本,一路回車,一般沒有問題。

          點擊Edit->VirtualMachine Settigns->Option->SharedFolders->Add,選定要共享的文件夾並給這個文件夾命名,下一步。選定“Enable thisshare”,確定以後,vmware會把這個文件夾自動mount到/mnt/hgfs目錄下。      

          備註:是否成功和ubuntu與vmwaretools的版本有關,需要彼此匹配。 

          8.直接掛接物理硬盤或者硬盤分區

          不過vmware也是支持直接mountHost機器的磁盤,方法是在虛機設置裏新建磁盤,類型選“Usephysicaldisk(foradvanced users)”,再選定磁盤和分區就可以。但是這樣的操作可能會引會文件系統的不一致,導致錯誤,不推薦使用。

          9.用ISO文件

          虛擬機裏面的光驅可以有物理光驅和ISO文件兩種,我們可以把我們的文件重點製件成ISO文件(用WinIso),然後在Linux中作爲CDROM掛接。


6.       Samba安裝

          Ubuntu下samba的安裝設置

          步驟1:Ubuntu下安裝samba

          #apt-getinstall samba4

          #apt-getinstall smbfs

          步驟2:添加linux用戶

          #useradduser1                //添加用戶名user1

          #passwduser1                  //給用戶名user1添加密碼

          #mkdir/home/user1        //建立user1的home目錄,如果不用這個用戶名來登陸linux,此步驟不是必需

          #chown-R user1:user1 /home/user1   //給user1的home目錄設置好權限

          步驟3:給samba服務器添加用戶

          說明:登陸samba的用戶必須已經是linux中的用戶

          #smbpasswd-a user1    //添加並給user1設置samba密碼

          步驟4:smb.conf設置

          #cd/etc/samba //進入設置目錄

          #mv smb.conf smb.conf.bak//做好備份,直接將系統默認配置文件改名

          #vimsmb.conf //建立和配置smb.conf文件

          [global]

          workgrop=x1 //X1爲你局域網中的工作組名

          serverstring=x2 //x2爲你linux主機描述性文字,比如:samba server。

          security=user//samba的安全等級,user代表需要輸入用戶名和密碼,改成share則不需要輸入用戶名和密碼

          [x3] //方框號中的x3這個名字可以隨便取,只是在win的網上鄰居中顯示的共享文件夾名

          path=/home/x4//x4爲你要共享的文件夾名,在共享前還要建立這個文件夾,並設好權限以便訪問,下面會說明。

          validusers=user1 //這個x4共享目錄只允許user1這個用戶進入

          public=no     //no表示除了user1這個用戶,其它用戶在進入samba服務器後看不見x4這個目錄,如果爲yes,雖然能看見x4這個目錄,但除了user1這個用戶能進入這個目錄,其它人進不了。

          writable=yes   //允許user1在x4目錄中進行讀和寫操作,反之no

          //存盤退出

          #testparm //檢查一下語法錯誤,比如拼錯

          步驟5:建立共享目錄

          #mkdir /home/x4

          #chown -R user1:user1 /home/x4 //因爲是root建立的目錄,其它用戶只有讀的權限,所還得把權限改一下。當然也可以簡單的用#chmod 777 /home/x4。還有個問題就是共享裏目錄的文件如果有些能訪問有些不能訪問,那肯定也是權限的問題,進入/home/x4,直接#chmod 777 *來解決。

          步驟6:重啓samba服務

          #/etc/init.d/samba restart

 

7.       windows客戶端連接到samba服務器

          首先確保你的服務端已經配置好samba併成功啓動服務,方法可參考此文章http://blog.csdn.net/linglongwunv/archive/2010/01/19/5212875.aspx,我們就可以從Windows 客戶端通過Windows網絡連接到Samba,這裏以 Windows XP 爲例,有兩種方法:

          1、網上鄰居-->查看工作組計算機-->SambaServer

          2、打開運行(windows鍵+R),輸入配置samba服務器的主機名或者IP(格式:\\192.168.1.98)

          3、進入samba可以看到我們配置的共享目錄名,此文章中http://blog.csdn.net/linglongwunv/archive/2010/01/19/5212875.aspx的步驟4配置的爲share

          4、第一次登錄需要輸入用戶名和密碼,此文章中http://blog.csdn.net/linglongwunv/archive/2010/01/19/5212875.aspx的步驟6配置的爲username的用戶名,可勾選記住我的密碼,以後在此機器訪問samba服務器就可以直接登錄了。

 

8.       cvs客戶端設置

          ubuntu有兩種cvs客戶端程序:cvs和cvsnt。

          我安裝了cvsnt

          0. 安裝cvsnt

          1. 在~/.bashrc設置CVSROOT變量:

          exportCVSROOT=:pserver:[email protected]:/export/home/cvsroot

           改了以後,用戶需要重新註冊

          2. 創建cvs目錄 mkdir~/cvsroot

          3. cdcvsroot

          cvs login

          xxx(密碼)

          4.checkout項目:

          cvs co a/b/project/src

          5. 常用命令:(斜槓後表示縮寫)

          cvs checkout / co

          cvs update / up

          cvs commit / ci

          查看一個文件的提交情況:cvs logfilename

          對比兩個版本文件的情況:cvs   diff  -r   version_1   version_2  file_name

          6.  獲得一個文件的歷史版本

          cvs   update  -r 1.3   test.c

          -r 後,文件成爲一個tag,是無法修改的,需重新從根目錄checkout

 

9.       安裝 vim

          sudo apt-get install vim

 

10.   安裝vfftp

           sudoapt-get install vsftpd

          察看是否打開21端口

          Sudonetstat –tulnp | grep 21

          登陸
          ftp localhost

           輸入Ubuntu的用戶名、密碼登陸

          ls(會顯示home目錄的文件)

          運行:

          standalone

          最普通的方式

          Sudoservice vsftpd

 

          更加詳細的文檔見http://wiki.ubuntu.org.cn/Vsftpd

 

11.   安裝pdb(Linux調試工具)

          安裝gcc時會默認安裝

 

12.   安裝insight(pdb界面調試工具)

          如果你的Ubuntu版本<10.04,你可以直接sudoapt-get install insight安裝,不用從源碼安裝.Ubuntu 10.04以上的版本,刪除了對Insight的默認支持,只能下載insight的源碼編譯安裝。源碼在ftp://sourceware.org/pub/insight/releases/上得到。

 

          1 解壓insight-6-8-1

          sudo tar jvxfinsight-6-8-1.tar.bz2

          2 修改源代碼,然後進入insight-6-8-1/gdb

          cdinsight-6-8-1/gdb

          sudo gediti386-linux-nat.c

          在頭文件部分加上:

          #include"i387-tdep.h"

          保存,退出

          3.從新回到 insight 目錄,生成Makefile

          cd ..

          sudo ./configure

          4 開始編譯

          sudo make

          5.遇到錯誤,編譯一段時間過後就會發現本貼一開始提到的錯誤,一些warning被當成錯誤了

          cd gdb #(進入insight下的gdb目錄)

          sudo geditMakefile

          找到WERROR_CFLAGS =-Werror,將其改爲

          WERROR_CFLAGS=#-Werror(這裏也可以將‘=’後面的內容刪除掉變成WERROR_CFLGAS= )

          保存退出

          仍然回到insight目錄

          cd ..

          6.接着make

          sudo make

          7.這時再過段時間看看,是不是編譯通過 呢 

          編譯通過後安裝 sudo makeinstall

 

          最後補充幾點:

          1. 沒有必等到make出error的時候再去添加頭文件,開始的時候加上就好,一氣呵成的編譯。

          另:頭文件之間有前後的依賴關係,要把i387-tdep.h放到include 較爲靠後的位置,沒有查到底是依賴於哪個頭文件,我把它放在了

          代碼:

          #ifdefHAVE_SYS_REG_H

          #include<sys/reg.h>

          #endif

          之後,可以編譯通過。

          2. 編譯之前應當check下機器是否安裝了termcap庫文件,若無的話安裝libncurses5-dev

          代碼:

          sudo apt-getinstall libncurses5-dev

          3.需要安裝xorg-dev

          代碼:

          sudo apt-getinstall xorg-dev

          4. 需要安裝libx11-dev

          代碼:

          Sudo apt-getinstall libx11-dev

 

          注意:使用gdp的時候不能用開編譯優化

 

          13.   基於VMware的Linux虛擬機硬盤空間擴大

          隨着Linux虛擬機的不斷使用,在VMware中經常遇到 預先裝好的 linux 虛擬機的硬盤空間過小 的問題,造成很多軟件不能安裝, 而重新裝一個,又挺麻煩。於是,上網搜了下關於 vmware 硬盤擴容的方法。總結如下:

          1、掛載點必須是一個目錄。

          2、一個分區掛載在一個已存在的目錄上,這個目錄可以不爲空,但掛載後這個目錄下以前的內容將不可用。

          首先使用VMware工具擴容分配的硬盤空間:

          1 、 vmware 提供一個命令行工具,vmware-vdiskmanager.exe ,位於 vmware 的安裝目錄下,比如

          C:\ProgramFiles\VMware\VMware Workstation\vmware-vdiskmanager.exe.

          在 windows 下運行 cmd ,轉到 vmware 的安裝目錄

          vmware-vdiskmanager.exe 可以查看幫助

          2. 對於擴容,可以輸入下列命令:

          vmware-vdiskmanager -x 50Gb"D:\VMware\WinXP\myLinux.vmdk"

          注: 要擴容的系統這時不能在運行 ,參數 "-x" 表示要擴展虛擬機硬盤空間,緊隨其後的數字是要擴展到的大小 ( 本例爲擴展到 50GB ,這是一個磁盤總量,包含了原先的磁盤容量 ) 。最後是指定要操作的虛擬機磁盤的具體文件,要是路徑名中有空格,必須以雙引號括起來。按回車鍵開始執行,執行完畢,退出命令提示符窗口,

          重啓 VMware ,會發現虛擬機硬盤空間已變成 50GB 了。

          我們重啓虛擬機後,發現虛擬機的硬盤是變成50GB 了,但進入 linux 系統後,用 "df -ah" 查看發現硬盤空間還是原先那麼大。

          雖然已經擴大了磁盤,但是由於還沒有經過分區,指定文件系統,所以 linux 操作系統無法識別(其實就相當於你的硬盤雖然大了,但是你並沒有對其進行分區是一個道理)。下面我們進行分區處理。

          3. 分區:( 這時要切換爲 Root 用戶,Ubuntu下使用sudo命令 )

          fdisk 命令: fdisk -l: 打印當前的磁盤分區表,這時我們可以看到磁盤的總量的確增加到 50GB 了,但是分區只有以前的那幾個原有的分區。

          鍵入命令: fdisk/dev/sda   “sda 就是經過擴容的硬盤,爲SCSI 硬盤, IDE 類型硬盤對應爲 hda ,是對該硬盤進行操作”

          鍵入 : m “ 列出 fdisk 的幫助 ”

          我們在這裏是要添加一個新分區,即將擴容出來的那部分做成一個新分區,這樣才能被操作系統掛載識別。

          鍵入:  n  ” 命令 n 用於添加新分區"

          此時, fdisk 會讓你選擇添加爲邏輯分區呢(編號從 5 開始)還是主分區(編號 1 到 4 )。選擇主分區吧,則鍵入 p ;選擇邏輯分區鍵入 l 。

          我們選擇主分區於是:

          鍵入:  p " 選擇創建主分區 "

          此時, fdisk 會讓你選擇主分區的編號,如果已經有了主分區 sda1 , sda2 ,那麼編號就選 3 ,即要創建的該分區爲 sda3.

          鍵入:  3

          此時, fdisk 又會讓你選擇該分區的開始值這個就是分區的 Start 值( start cylinder );這裏最好直接按回車,

          如果您輸入了一個非默認的數字,會造成空間浪費;

          此時鍵入: w  " 保存所有並退出,分區劃分完畢 "

          我們現在還不能用這個分區 , 因 沒格式化 ,這時要重啓系統就能夠在 dev 下面看到 sda3 ,如果不重啓不能進行下面操作

          PS:  #partprobe 在不重啓的情況下,強制加載新的分區信息。

          4. 格式化該新添加的分區:

          鍵入: mkfs -t ext3/dev/sda3

          或者   mkfs.ext3    /dev/sda3 格式化指定的分區 , 依次類推 , 現在的系統大部分都是 ext3 格式 , 如果你需要其它的 , 可以查看 mkfs 的幫助。

          此時我們就可以使用該新增分區啦:

          5 、掛載該分區:

          手動掛載,則鍵入:sudo mount/dev/sda3 /mnt/sda3 表示將該新分區掛載到 /mnt/sda3 / 這個目錄下面

          (注:Ubuntu下默認是掛載到/media對應目錄下,並且手動掛載的信息在/etc/mtab文件下有登記信息)

          開機自動掛載,則修改 /etc/fstab文件,在這個文件裏面添加一行:

          /dev/sda3      /mnt/sda3       ext3   defaults,        0       2

          到這裏就可以使用該新加分區啦 。

          PS:

          fstab的第五列是表示dump選項,dump工具通過這個選項位置上的數字來決定文件系統是否需要備份。如果是0,dump就會被忽略,事實上,大多數的dump設置都是0。而第六列是fsck選項,fsck命令通過檢測該字段來決定文件系統通過什麼順序來掃描檢查,根文件系統/對應該字段的值應該爲1,其他文件系統應該爲2。若文件系統無需在啓動時掃描檢查,則設置該字段爲0。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章