1. 程式人生 > >linux下編譯安裝程式的路徑說明

linux下編譯安裝程式的路徑說明

在Makefile中,安裝目錄同樣需要使用變數來指定,這樣就可以很方便的修改檔案 的安裝路徑。安裝目錄的標準命名下邊將一一介紹。這些變數基於標準的檔案系統結構,這些變數的變種在SVR4、4.4BSD、Linux、Ultrix v4以及其它現代作業系統中都有使用。 安裝者希望在呼叫make是改變這些值,(例如 make prefix=/usr install),或者在配置時改變這些值(例如 configure –prefix=/usr)。GNU包不會對在該系統上這些變數適合於哪些值做任何猜想,或者說GNU包不會猜測這些包應該被安裝到哪裡是更合適 的:GNU包使用預設的特定設定是為了以便於所有的GNU包行為一致,它允許安裝者做任何自己想要的佈局。 以下所羅列的兩個變數是指定安裝檔案的根目錄。所有其它安裝目錄都是它們的子目錄。注意:檔案不能直接安裝在這兩個目錄下。 prefix 這個變數(通常作為實際檔案安裝目錄的父目錄,可以理解為其它實際檔案安裝目錄的字首)用於構造下列(除這兩個安裝根目錄以外的其它目錄變數)變數的預設值。變數“prefix”預設值是“/usr/local”。建立完整的GNU系統時,變數prefix的預設值是空值,“/usr”是“/”的符號連線符檔案。(如果使用“Autoconf”工具,它應該寫成“@[email protected]”)。注意:當更改了變數“prefix”以後重新執行“make install”,不會導致可執行程式(終極目標)的重建。
exec_prefix 這個字首用於構造下列變數的預設值。變數“exec_prefix”預設值是“$(prefix)”(如果使用“Autoconf”工具,它應該寫為“@[email protected]”)。通常,“$(exec_prefix)”目錄中的子目錄下存放和機器相關檔案(例如可執行檔案和例程庫)。“$(prefix)”目錄的子目錄存放通用的一般檔案。同樣:改變“exec_prefix”的值之後執行“make install”,不會重建可執行程式(終極目標)。 檔案(包括可執行程式、說明文件等)的安裝目錄: bindir 用於安裝一般使用者可執行的可執行程式。通常它的值為:“
/usr/local/bin”,使用時應寫為:“$(exec_prefix)/bin”。(使用“Autoconf”工具時,應該為“@[email protected]”) sbindir 安裝可在shell中直接呼叫執行的程式。這些命令僅對系統管理員有用(系統管理工具)。通常它的值為:“/usr/local/sbin”,要求在使用時應寫為:“$(exec_prefix)/sbin”。(使用“Autoconf”工具時,應該為“@[email protected]”) libexecdir 用於安裝那些通常不是由使用者直接使用,而是由其它程式呼叫的可執行程式。通常它的值為:“/usr/local/libexec
”,要求在使用時應寫為:“$(exec_prefix)/libexec”。(使用“Autoconf”工具時,應該為“@[email protected]”) 程式執行時使用的資料檔案可從以下兩個方面來分類: 1.是否可由程式更改。分為兩類:程式可修改和不可修改的檔案(雖然使用者可編輯其中某些檔案)。 2.是否和體系結構相關。分為兩類:體系結構無關檔案,可被所有型別的機器共享;體系結構相關檔案,僅可被相同型別機器、作業系統共享;其它的就是那些不能被任何兩個機器共享的檔案。 這樣就存在六種不同的可能。除編譯生成的目標檔案(.o檔案)和庫檔案以外,不推薦使用那些和特定機器體系結構相關的檔案,使用和體系無關的資料檔案更加簡潔,而且,它的實現也並不非常困難。 Makefile中應該使用以下變數為不同型別的檔案指定對應的安裝目錄: `datarootdir' The root of the directory tree for read-only architecture-independent data files. This should normally be /usr/local/share, but write it as $(prefix)/share. (If you are using Autoconf, write it as `@[email protected]'.) `datadir''s default value is based on this variable; so are `infodir', `mandir', and others. Datarootdir 機器體系結構無關的只讀資料檔案的根目錄。通常它的值為:“/usr/local/share”,使用時應寫為:“$(prefix)/share”。(使用“Autoconf”工具時,應該為“@[email protected]”)。‘datadir’的預設值是基於這個變數的,`infodir', `mandir'等其它變數的值也是如此。 datadir 用於安裝和機器體系結構無關的只讀資料檔案。通常它的值與datarootdir一樣,但是我們使用兩個變數是為了使用者能夠移動一些程式特定的檔案而不修改如man 檔案、info檔案的路徑。通常它的值為:“/usr/local/share”,使用時應寫為:“$(prefix)/share”。(使用“Autoconf”工具時,應該為“@[email protected]”)。“$(infodir)”和“$(includedir)”作為例外情況,參考後續對它們的詳細描述。 Datadir的定義對所有包都一樣,因此你應該安裝你的資料在它的子目錄下。大部分包安裝它們的資料在如此目錄下:$(datadir)/package-name/. sysconfdir 用於安裝從屬於特定機器的只讀資料檔案,包括:主機配置檔案、郵件服務、網路配置檔案、“/etc/passwd”檔案等。所有該目錄下的檔案都應該是普通文字檔案(可識別的“ASCII”碼文字檔案)。通常它的值為:“/usr/local/etc”,在使用時應寫為:“$(prefix)/etc”。(使用“Autoconf”工具時,應該為“@[email protected]”)。 不要將可執行檔案安裝在這個目錄下(可執行檔案的安裝目錄應該是“$(libexecdir)”或者“$(sbindir)”)。也不要在這個目錄下安裝那些需要更改的檔案(系統的配置檔案等)。這些檔案應該安裝在目錄“$(localstatedir)”下。 sharedstatedir 用於安裝那些可由程式執行時修改的檔案,這些檔案與體系結構無關。通常它的值為:“/usr/local/com”,要求在使用時應寫為:“$(prefix)/com”。(使用“Autoconf”工具時,應該為“@[email protected]”) localstatedir 用於安裝那些可由程式執行時修改的檔案,但這些檔案和體系結構相關。使用者沒有必要通過直接修改這些檔案來配置軟體包,對於不同的配置檔案,將它們放在“$(datadir)”或者“$(sysconfdir)”目錄中。“$(localstatedir)”值通常為:“/usr/local/var”,在使用時應寫為:“$(prefix)/var”。(使用“Autoconf”工具時,應該為“@[email protected]”) libdir 用於存放編譯後的目標檔案(.o)檔案庫檔案(文件檔案或者執行的共享庫檔案)。不要在此目錄下安裝可執行檔案(可執行檔案應該安裝在目錄“$(libexecdir)”下)。變數libdir值通常為:“/usr/local/lib”,使用時應寫為:“$(exec_prefix)/lib”。(使用“Autoconf”工具時,應該為“@[email protected]”) infodir 用於安裝軟體包的 Info 檔案。它的預設值為:“/usr/local/info”,使用時應寫為:“$(prefix)/info”。(使用“Autoconf”工具時,應該為“@[email protected]”) lispdir 用於安裝軟體包的Emacs Lisp 檔案的目錄。它的預設值為:“/usr/local/share/emacs/site-lisp”,使用時應寫為:“$(prefix)/share/emacs/site-lisp”。當使用Autoconf工具時,應將寫為“@[email protected]”。為了保證“@[email protected]”能夠正常工作,需要在“configure.in”檔案中包含如下部分: lispdir='${datadir}/emacs/site-lisp' AC_SUBST(lispdir) includedir 用於安裝使用者程式原始碼使用“#include”包含的標頭檔案。它的預設值為:“/usr/local/include”,使用時應寫為:“$(prefix)/include”。(使用“Autoconf”工具時,應該為“@[email protected]”)。

gcc外的大多數編譯器不會在目錄“/usr/local/include”中搜尋標頭檔案,因此這種方式只適用gcc編譯器。這一點應該不是一個問題,因為很多情況下一些庫需要gcc才能工作。對那些依靠其它編譯器的庫檔案,需要將標頭檔案安裝在兩個地方,一個由變數includedir”指定,另一個由變數“oldincludedir”指定。

oldincludedir 它所指定的目錄也同樣用於安裝標頭檔案,這些標頭檔案用於非gcc的編譯器。它的預設值為:“/usr/include”。(使用“Autoconf”工具時,應該為“@[email protected]”)。 Makefile在安裝標頭檔案時,需要判斷變數“oldincludedir”的值是否為空。如果為空,就不使用它進行標頭檔案的安裝(一般是安裝完成“/usr/local/include”下的標頭檔案之後才安裝此目錄下的標頭檔案)。 一個軟體包的安裝不能替換該目錄下已經存在的標頭檔案,除非是同一個軟體包(重新使用相同的軟體包在此目錄下安裝標頭檔案)。例如,軟體包“Foo”需要在“oldincludedir”指定的目錄下安裝一個頭檔案“foo.h”時,可安裝的條件為:1. 目錄“$(oldincludedir)”目錄下不存在標頭檔案“foo.h”;2. 已經存在標頭檔案“foo.h”,存在的標頭檔案“foo.h”是之前軟體包“Foo”安裝的。 檢查標頭檔案“foo.h”是否來自於軟體包Foo,需要在標頭檔案的註釋中包含一個“magic”字串,使用命令“grep”來在該檔案中查詢這個magic `docdir' The directory for installing documentation files (other than Info) for this package. By default, it should be /usr/local/share/doc/yourpkg, but it should be written as $(datarootdir)/doc/yourpkg. (If you are using Autoconf, write it as `@[email protected]'.) The yourpkg subdirectory, which may include a version number, prevents collisions among files with common names, such as README. 這個目錄安裝除了Info外的該包提供的文件,它的預設值/usr/local/share/doc/yourpkg,使用時應寫為:“$(datarootdir)/doc/yourpkg”。(使用“Autoconf”工具時,應該為“@[email protected]”)。Yourpkg子目錄可能包括版本號,為了阻止具有相同檔名字的檔案衝突,例如README。 `infodir' The directory for installing the Info files for this package. By default, it should be, but it should be written as (If you are using Autoconf, write it as `@[email protected]'.) infodir is separate from docdir for compatibility with existing practice. 這個目錄安裝該包的info檔案。它的預設值是:/usr/local/share/info, 使用時應寫成:$(datarootdir)/info.(使用“Autoconf”工具時,應該為“@[email protected]”).infodir從docdir中單獨分離出來為了相容已經存在的practice。 `htmldir' `dvidir' `pdfdir' `psdir' Directories for installing documentation files in the particular format. (It is not required to support documentation in all these formats.) They should all be set to $(docdir) by default. (If you are using Autoconf, write them as `@[email protected]', `@[email protected]', etc.) Packages which supply several translations of their documentation should install them in `$(htmldir)/'ll, `$(pdfdir)/'ll, etc. where ll is a locale abbreviation such as `en' or `pt_BR'. 這些目錄用於安裝特定格式的文件(並不要求支援所有這些格式的文件)。預設值應該設定為:$(docdir)(使用“Autoconf”工具時,應該為“@htmldir @”等)。 `libdir' The directory for object files and libraries of object code. Do not install executables here, they probably ought to go in $(libexecdir) instead. The value of libdir should normally be /usr/local/lib, but write it as $(exec_prefix)/lib. (If you are using Autoconf, write it as `@[email protected]'.) `lispdir' The directory for installing any Emacs Lisp files in this package. By default, it should be /usr/local/share/emacs/site-lisp, but it should be written as $(datarootdir)/emacs/site-lisp. If you are using Autoconf, write the default as `@[email protected]'. In order to make `@[email protected]' work, you need the following lines in your configure.in file:           lispdir='${datarootdir}/emacs/site-lisp'           AC_SUBST(lispdir) `localedir' The directory for installing locale-specific message catalogs for this package. By default, it should be /usr/local/share/locale, but it should be written as $(datarootdir)/locale. (If you are using Autoconf, write it as `@[email protected]'.) This directory usually has a subdirectory per locale.

這個目錄安裝該包用於本地特定訊息的目錄。預設值是:/usr/local/share/locale, 但是應該寫成:`@[email protected]'。這個目錄常常對每個locale(本地化)都有一個子目錄。

相關推薦

linux編譯安裝程式路徑說明

在Makefile中,安裝目錄同樣需要使用變數來指定,這樣就可以很方便的修改檔案 的安裝路徑。安裝目錄的標準命名下邊將一一介紹。這些變數基於標準的檔案系統結構,這些變數的變種在SVR4、4.4BSD、Linux、Ultrix v4以及其它現代作業系統中都有使用。 安裝者

Linux編譯安裝memcached

linux memcache 一.在編譯安裝之前,先安裝系統所需要的相關庫文件#yum -y install gcc gcc-c++ make cmake libtool autoconf libaio二.下載相應的依賴庫和memcached源碼包1.從http://libevent.org/下載li

linux編譯安裝php各種報錯大集合

linuxPHP開源腳本語言PHP(外文名: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,入門門檻較低,易於學習,使用廣泛,主要適用於Web開發領域。PHP的文件後綴名為php。本文為大家整理匯總了一些linux

Linux編譯安裝XLib庫

問題 fun col bsp source 過程 知識 4.2 span 新裝好的redhat7.3,在安裝qt的時候,有時會出現 Basic XLib functionality test failed!You might need to modify the inclu

linux編譯安裝python

color down 二進制 config 編譯 服務 pytho -- bsp 從官網下載指定的源碼包 https://www.python.org/downloads/source/ 把源碼文件以二進制方式上傳到linux服務器 解壓 tar

Linux編譯安裝SVN

cep can 關閉 進程 關閉selinux creat table curses 依賴包 說明:SVN(subversion)的運行方式有兩種:一種是基於Apache的http、https網頁訪問形式;還有一種是基於svnserve的獨立服務器模式。SVN的數據存儲方式

Linux編譯安裝mysql

1、在官網下載mysql壓縮包:     下載地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads     下載版本:我這裡選擇的5.6.33,通用版,linux下64位     也可以直接通過命令下載:     wget ht

在 CentOS 7上安裝並配置 Python 3.6 環境 超詳細的 Linux CentOS 編譯安裝python3 Linux編譯安裝python3

前言 按照此方法安裝保證以下報錯什麼的統統都沒有! 基礎環境 系統:centos7.4 軟體:python3 Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connect

linux編譯安裝最新版phalcon

官網 安裝文件 開發文件中文Phalcon 3.1.1 git clone --depth=1 "git://github.com/phalcon/cphalcon.git" cd cphalcon/build # 如需指定php檔案如下,不指定,直接./install

Linux編譯安裝gcc

引言 1、gcc下載地址:ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases 2、GMP、MPFR、MPC下載地址:ftp://gcc.gnu.org/pub/gcc/infrastructure/

Linux編譯安裝Apache 2.4

Linux一般會自帶httpd服務,但是版本一般不是最新,效能也不是最好,生產中建議手動安裝官方原始碼包,安裝Apache官方包之前首先要停止之前的httpd服務,停止後也可以解除安裝之前的版本   準備工作做完,首先去官網下載Apache的原始碼包,http://httpd.apache.org/ 這裡下

linux編譯安裝最新版phalcon centosPHP7新增phalcon擴充套件

linux下編譯安裝phalcon 1、下載原始碼包    執行命令:  git clone --depth=1 git://github.com/phalcon/cphalcon.git 進入目錄  執行命令:  

linux編譯安裝配置php5.6.30過程

在第一次編譯安裝php5.6.30失敗後,參考了http://www.phpworld.cn/system/php/11.html的一些內容,第二次編譯安裝成功,特此記錄過程。 一、編譯安裝php5.6.30 安裝環境: # cat /etc/redhat-release CentOS

超詳細 Linux 編譯安裝Redis 以及php配套使用

一、Linux 下安裝Redis 下載地址:http://redis.io/download,下載最新文件版本。 把滑鼠移到上圖的綠色框上,就會顯示下圖提示:(直接右鍵複製連結就好) 本教程使用的舊版,文件版本為 3.2.11,(舊版的連結在同一頁面的下方找的到)下載並安裝:

linux編譯C++程式

一、GCC(GNU Compiler Collection)是Linux下最主要的編譯工具,GCC不僅功能非常強大,結構也異常靈活。它可以通過不同的前端模組來支援各種語言,如Java、Fortran、Pascal、Modula-3和Ada     &nbs

linux編譯安裝php7(相容現有的php5.6版本)

1.首先去php官網下載一個php7版本原始碼包 http://php.net/downloads.php,我這下載的是php7.2.13版本.  2.使用ftp或者linux的rz命令將包上傳到linux下,開始進行編譯安裝. 3.解壓安裝包 # tar -zxvf   

linux編譯安裝apr

1.下載軟體wget   http://apache.etoak.com//apr/apr-1.4.6.tar.gzwget   http://apache.etoak.com//apr/apr-util-1.4.1.tar.gz2.安裝依賴包yum  install  a

Linux編譯安裝WizNote

#(一) 下載WizNote的原始碼 建立目錄 cd ~ mkdir wizhi ##安裝git工具 # ubuntu/debian apt-get install git -t # rhel/centos/fedora yum install git -y

Linux編譯安裝Boost1.66

新聞 可移植的 C++ 標準庫 Boost 釋出了 1.66.0 版本,Boost 庫是一個經過千錘百煉、可移植、提供原始碼的 C++ 庫,作為標準庫的後備,是 C++ 標準化程序的發動機之一,由 C++ 標準委員會庫工作組成員發起。 使用 VS 15.5

Linux 編譯安裝 gcc 5.4.0

以 gcc 5.4.0 版本為例,介紹用原始碼來編譯安裝 gcc 的方法 一、安裝 gcc 1、解壓縮 把 gcc-5.4.0.tar.gz 拷貝到系統中的某個目錄,比如 /usr/local/src,並解壓到此目錄: tar zxf gcc-5.4.0.tar