Linux下C開發環境的構成和安裝

本文介紹了Linux的C開發環境的構成和安裝,使讀者對Linux的C開發環境能有初步的了解。

  你了解Linux嗎?相信現在越來越多的人會說“是”的。那么你了解到何種程度呢?不可否認,目前決大多 數的Linux用戶對Linux的了解還處于比較低級的層次,他們可能會幾條命令、會配幾種服務、會用rpm來安裝軟件、會操作KDE/Gnome界機等等,但是當他們遇到一些需要編譯安裝的軟件時,面對一些簡單的出錯信息,他們就手足無措了。要想真正跨躍這些初級層次,你就不可能不去了解一些底層的東西,比如本文要講到的Linux下的C開發環境以及本文之外的其它操作系統知識。

  Linux和C天生有不解之源,大家可能知道Linux的操作系統內核就主要是用C寫的,另外Linux下的很多軟件也是用C寫的,特別是一些著名的服務軟件,比如MySQL、Apache等。初學者可能在編譯MySQL這樣的軟件時,遇到過各式各樣的錯誤,其實只要你初步了解了Linux的C開發環境,你就能自選解決安裝過程中的一些錯誤。

  Linux的C開發環境與Windows的有所不同,在Linux下,一個完整的C開發環境包括以下三個組成:

  1、函數庫: glibc

  要構架一個完整的C開發環境,Glibc是必不可少的,它是Linux下C的主要函數庫。Glibc有兩種安裝方式:

  A.安裝成測試用的函數庫    在編譯程序時用不同的選項來試用新的函數庫   B.安裝成主要的C函數庫    所有新編譯程序均用的函數庫

Glibc2含幾個附加包:LinuxThreads、locale和crypt,通常它們的文件名隨版本不同而類似于下列文件名:

  glibc-2.06.tar.gz   glibc-linuxthreads-2.0.6.tar.gz   glibc-localedate-2.0.6.tar.gz   glibc-crypt-2.0.6.tar.gz

  2、編譯器:gcc

  gcc(GNU CCompiler)是GNU推出的功能強大、性能優越的多平臺編譯器,gcc編譯器能將C、C++語言源程序、匯程式化序和目標程序編譯、連接成可執行文件,以下是gcc支持編譯的一些源文件的后綴及其解釋:

  .c為后綴的文件,C語言源代碼文件;   .a為后綴的文件,是由目標文件構成的檔案庫文件;   .C,.cc或.cxx 為后綴的文件,是C++源代碼文件;   .h為后綴的文件,是程序所包含的頭文件;   .i 為后綴的文件,是已經預處理過的C源代碼文件;   .ii為后綴的文件,是已經預處理過的C++源代碼文件;   .m為后綴的文件,是Objective-C源代碼文件;   .o為后綴的文件,是編譯后的目標文件;   .s為后綴的文件,是匯編語言源代碼文件;   .S為后綴的文件,是經過預編譯的匯編語言源代碼文件。

  3、系統頭文件:glibc_header

  缺少了系統頭文件的話,很多用到系統功能的C程序將無法編譯。

  假如用戶在安裝過程中少裝了這些包,就會無法編譯C源程序。初學者有時候選擇自己定制軟件包來安裝,結果遺漏了這些包,導致無法編譯源程序,不少人就只好重新安裝一遍Linux。其實并不需要這樣做,雖然從tar包來安裝Linux的C開發環境對于初學者來說比較難,但是我們還是可以通過rpm包來迅速安裝Linux的C開發環境的。下面以Red Hat 7.3為例,介紹如何安裝Linux的C開發環境,如果是更高版本的Red Hat也可以參考,只是要注意軟件版本的不同。

  由于gcc包需要依賴binutils和cpp包,另外make包也是在編譯中常用的,所以一共需要8個包來完成安裝,它們是:

  cpp-2.96-110.i386.rpm   binutils-2.11.93.0.2-11.i386.rpm   glibc-2.2.5-34.i386.rpm   glibc-kernheaders-2.4-7.14.i386.rpm   glibc-common-2.2.5-34   glibc-devel-2.2.5-34.i386.rpm   gcc-2.96-110.i386.rpm   make-3.79.1-8.i386.rpm

如果連在internet上的話,可以直接從internet上安裝,命令依次如下:

  rpm -ivh   ftp://216.254.0.38/linux/redhat/7.3/en/os/i386/RedHat/RPMS/cpp-2.96-110.i386.rpm

  rpm -ivh   ftp://216.254.0.38/linux/redhat/7.3/en/os/i386/RedHat/RPMS/binutils-2.11.93.0.2-11.i386.rpm

  rpm -ivh   ftp://216.254.0.38/linux/redhat/7.3/en/os/i386/RedHat/RPMS/glibc-kernheaders-2.4-7.14.i386.rpm

  rpm -ivh   ftp://216.254.0.38/linux/redhat/7.3/en/os/i386/RedHat/RPMS/glibc-2.2.5-34.i386.rpm

  rpm -ivh   ftp://216.254.0.38/linux/redhat/7.3/en/os/i386/RedHat/RPMS/glibc-devel-2.2.5-34.i386.rpm

  rpm -ivh   ftp://216.254.0.38/linux/redhat/7.3/en/os/i386/RedHat/RPMS/glibc-common-2.2.5-34.i386.rpm

  rpm -ivh   ftp://216.254.0.38/linux/redhat/7.3/en/os/i386/RedHat/RPMS/gcc-2.96-110.i386.rpm

  rpm -ivh   ftp://216.254.0.38/linux/redhat/7.3/en/os/i386/RedHat/RPMS/make-3.79.1-8.i386.rpm

  如果不是連在internet上的話,就要下載下來安裝了。安裝完后,就構成了最基本的C開發環境,在這個C開發環境中,可以編譯多數的C寫的應用程序。而對于一個C程序來說,安裝完成后通常可以分成三個組成:

  1.可執行文件   2.包含文件   3.庫文件

  可執行文件就是最終運行的命令,包含文件是該C程序include的一些定義文件,庫文件則是該C程序自定義的庫。比如對于用RPM安裝的MySQL:可執行文件放在/usr/bin下,包含文件放在/usr/include/mysql下,庫文件在/usr/lib/mysql下。只有系統可以找到程序對應的包含文件和庫文件,程序可執行文件才能正常運行。

  了解了Linux的C開發環境的構成和安裝,還是不夠的,還需要對其深入研究和學習,才能夠做到“知其然,知其所以然”。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535578.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535578.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535578.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Shell腳本——變量

變量是任何一種編程語言都必不可少的組成部分,變量用來存放各種數據。腳本語言在定義變量時通常不需要指明類型,直接賦值就可以,Shell 變量也遵循這個規則 在 Bash shell 中,每一個變量的值都是字符串,無論你給變量賦值…

基礎環境安裝腳本

#/bin/bash # Check if user is root if [ $(id -u) ! "0" ]; thenecho "Error: You must be root to run this script, please use root"exit 1 fiecho "安裝環境包"if [ -f /etc/yum.repos.d/rhel-source.repo ];thenrm -r /etc/yum.repos.d…

Apache 虛擬主機的配置[Ubuntu]

基本配置 我們都知道,如果我們想在單臺機器上設置多個域名或主機名時,我們就要用到基于名稱的虛擬主機了。那么要如何進行設置呢?這就是本 HowTo 想解決的問題了。在 Ubuntu 的 /etc/apache2/ 目錄下有個 Apache2 的主配置文件 apache2.conf…

Shell腳本——數字計算

Shell 和其它編程語言不同,Shell 不能直接進行算數運算,必須使用數學計算命令 要想讓數學計算發揮作用,必須使用數學計算命令,Shell 中常用的數學計算命令如下表所示。 運算操作符/運算命令說明(( ))用于整數運算,效率…

windows下最好的C++ IDE

1. 你是不是用慣了VC6.0?假如是,我現在推薦的IDE仍然是VC6.0的IDE。 2. 你是不是覺得VC6.0過時了,很多C語法它都不支持?我現在推薦的編譯器她在一直發展著,支持最新的C語法。 3. VC.net的界面弱智,而且包含…

Shell腳本——內置命令

一、內置命令 所謂 Shell 內置命令,就是由 Bash 自身提供的命令,而不是文件系統中的某個可執行文件。 例如,用于進入或者切換目錄的 cd 命令,雖然我們一直在使用它,但如果不加以注意很難意識到它與普通命令的性質是不…

Shell腳本——基礎語法

一、條件判斷 1.1、基本語法 [ condition ](注意condition前后要有空格) 注意:條件非空即為true,[ abcdef ]返回true,[] 返回false。 1.2、常用判斷條件 兩個整數之間比較 字符串比較 -lt 小于(less …

#2002 - 服務器沒有響應 (or the local MySQL server's socket is not ...

經常見有兄弟遇到這樣的問題: mysql -u root -p一切正常,但是用phpmyadmin卻死活不對,提示如下錯誤: #2002 - 服務器沒有響應 (or the local MySQL servers socket is not correctly configured) 我 google 了一下,發現…

第一個Scala程序——Hello World!

一、交互式編程 交互式編程不需要創建腳本文件,可以通過以下命令調用: $ scala Welcome to Scala 2.13.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_231). Type in expressions for evaluation. Or try :help.scala> println("Hello Wo…

CENTOS5下VSFTPD的設置

需求:(虛擬用戶分下載用戶/下載、上傳但不能刪除用戶/管理用戶) 一、安裝 yum -y install vsftpd* yum -y install pam* yum -y install db4* 二、系統帳戶 1、vsftpd服務的宿主用戶 useradd vsftpd -s /sbin/nologin 2、…

Scala基礎語法

如果你之前是一名 Java 程序員,并了解 Java 語言的基礎知識,那么你能很快學會 Scala 的基礎語法。 一、基本語法 Scala 基本語法需要注意以下幾點: 區分大小寫 - Scala是大小寫敏感的,這意味著標識Hello 和 hello在Scala中會有不…

DNS詳解

一、DNS 概念 人和人要互相識別和記憶,需要名字作為輔助,而對于網絡世界,在因特網內也需要一種命名系統來做類似的事情,該系統使用了域來劃分,任何一個網絡里的主機(或者路由器)都有獨一無二的域名(類似國家代碼),域又能繼續劃分為子域(類似每個國家有不同的省份代…

Shell腳本——函數

Shell 函數的本質是一段可以重復使用的腳本代碼,這段代碼被提前編寫好了,放在了指定的位置,使用時直接調取即可。 一、語法 Shell 函數定義的語法格式如下: function name() {statements[return value] }對各個部分的說明&#…

scala通過JDBC進行數據庫操作

scala通過JDBC方式操作mysql (需要加載 mysql-connector-java 驅動) maven依賴&#xff1a; <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.45</version></dependency>一…

Linux下Java的安裝與配置

0、下載好JDK安裝包后上傳到Linux服務器的/usr/local/java/下 1、解壓tar -zxvf jdk-8u251-linux-x64.tar.gz 2、改名mv jdk1.8.0_251 jdk1.8 3、配置環境變量vi /etc/profile 添加以下內容 #JAVA export JAVA_HOME/usr/local/java/jdk1.8 export JRE_HOME$JAVA_HOME/jre e…

運維同步rsync

Rsync(remote rynchronization)是一款開源的、快速的、多功能的、可實現全量以及增量的本地或者遠程數據同步的備份的優秀工具&#xff0c;可使本地主機不同分區或目錄之間及本地和遠程兩臺主機之間的數據快速同步鏡像&#xff0c;遠程備份等功能同時它在同步文件的同時可以保…

Spark初識-什么是Spark

Spark是一個基于內存的開源計算框架&#xff0c;于2009年誕生于加州大學伯克利分校AMPLab&#xff08;AMP&#xff1a;Algorithms&#xff0c;Machines&#xff0c;People&#xff09;&#xff0c;它最初屬于伯克利大學的研究性項目&#xff0c;后來在2010年正式開源&#xff0…

系統優化

1、關閉selinux sed -i ‘s/SELINUXenforcing/SELINUXdisabled’ setenforce 0 2.精簡開機服務 ntsysv setup system service

Spark初識-Spark與Hadoop的比較

Spark&#xff0c;是分布式計算平臺&#xff0c;是一個用scala語言編寫的計算框架&#xff0c;基于內存的快速、通用、可擴展的大數據分析引擎 Hadoop&#xff0c;是分布式管理、存儲、計算的生態系統&#xff1b;包括HDFS&#xff08;存儲&#xff09;、MapReduce&#xff08;…

Spark初識-Spark基本架構概覽使用

當需要處理的數據量超過了單機尺度(比如我們的計算機有4GB的內存&#xff0c;而我們需要處理100GB以上的數據)這時我們可以選擇spark集群進行計算&#xff0c;有時我們可能需要處理的數據量并不大&#xff0c;但是計算很復雜&#xff0c;需要大量的時間&#xff0c;這時我們也可…