日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

對(duì)話 UNIX,第 12 部分: 自己動(dòng)手完成項(xiàng)目( 四 )


 --enable-threadsafe Support threadsafe operation
 --enable-cross-thread-connections
 Allow connection sharing across threads
 --enable-threads-override-locks
 Threads can override each others locks
 --enable-releasemodeSupport libtool link to release mode
 --enable-tempstore Use an in-ram database for temporary tables
 (never,no,yes,always)
 --disable-tcldo not build TCL extension
 --disable-readline disable readline support [default=detect]
 --enable-debug enable debugging & verbose explain
返回到 ./configure --help,最頂部的輸出顯示了可執(zhí)行文件的缺省安裝目錄是 /usr/local/bin,庫文件的缺省安裝目錄是 /usr/local/lib,等等 。許多系統(tǒng)使用一個(gè)替代的層次結(jié)構(gòu)來存儲(chǔ)非核心軟件 。
例如,許多系統(tǒng)管理員選擇使用 /opt 而不是 /usr/local 存儲(chǔ)本地添加的或者在本地進(jìn)行了修改的軟件 。如果您希望將 SQLite 安裝到與缺省目錄不同的其他目錄中,可以使用 --prefix= 選項(xiàng)指定該目錄 。一種可行的方法(也是一種常見的方法,如果只有您一個(gè)人使用這個(gè)軟件包,或者如果您沒有 root 訪問權(quán)限以便在全局的范圍內(nèi)安裝該軟件)是將該軟件安裝到您的 home 目錄中的層次結(jié)構(gòu)中:$ ./configure --prefix=$HOME/sw
使用這個(gè)命令,構(gòu)建過程的安裝部分將在 $HOME/sw 中(比如 $HOME/sw/bin、$HOME/sw/lib、$HOME/sw/etc、$HOME/sw/man,以及其他所需的目錄中)重新創(chuàng)建該軟件的層次結(jié)構(gòu) 。為了簡單起見,這個(gè)示例在缺省目標(biāo)處安裝其代碼 。
編譯代碼
./configure 的結(jié)果是一個(gè)與您的 Unix 版本兼容的 Makefile 。名為 make 的開發(fā)實(shí)用工具將使用這個(gè) Makefile,以執(zhí)行編譯所需的步驟,并將代碼鏈接到一個(gè)可執(zhí)行文件 。您可以打開這個(gè) Makefile 對(duì)其進(jìn)行檢查,但不要對(duì)它進(jìn)行編輯,因?yàn)槿绻俅芜\(yùn)行 ./configure,它將列出您所做的任何修改 。
這個(gè) Makefile 中包含需要編譯的源文件的列表,并且它還包括啟用或者禁用并選擇 SQLite 包中的某些代碼片段的常數(shù) 。例如,如果 configure 工具檢測(cè)到了系統(tǒng)中合適的芯片,那么它可能會(huì)啟用 64位處理器特定的代碼 。這個(gè) Makefile 還說明了源文件之間的依賴關(guān)系,因此在一個(gè)非常重要的頭文件 (.h) 中進(jìn)行的一項(xiàng)更改,可能會(huì)導(dǎo)致重新編譯所有的 C 源代碼 。
您的下一個(gè)步驟是運(yùn)行 make,以構(gòu)建該軟件(請(qǐng)參見清單 5):
清單 5. 運(yùn)行 make
$ make
sed -e s/--VERS--/3.3.17/ ./src/sqlite.h.in |
 sed -e s/--VERSION-NUMBER--/3003017/ >sqlite3.h
gcc -g -O2 -o lemon ./tool/lemon.c
cp ./tool/lempar.c .
cp ./src/parse.y .
./lemon parse.y
mv parse.h parse.h.temp
awk -f ./addopcodes.awk parse.h.temp >parse.h
cat parse.h ./src/vdbe.c | awk -f ./mkopcodeh.awk >opcodes.h
./libtool --mode=compile --tag=CC gcc -g -O2 -I. -I./src
 -DNDEBUG -I/System/Lib rary/Frameworks/Tcl.framework/Versions/8.4/Headers
 -DTHREADSAFE=0 -DSQLITE_THREA D_OVERRIDE_LOCK=-1
 -DSQLITE_OMIT_LOAD_EXTENSION=1 -c ./src/alter.c
mkdir .libs
gcc -g -O2 -I. -I./src -DNDEBUG
 -I/System/Library/Frameworks/Tcl.framework/Vers ions/8.4/Headers
 -DTHREADSAFE=0 -DSQLITE_THREAD_OVERRIDE_LOCK=-1
 -DSQLITE_OMIT_L OAD_EXTENSION=1 -c ./src/alter.c -fno-common
 -DPIC -o .libs/alter.o
...
ranlib .libs/libtclsqlite3.a
creating libtclsqlite3.la
注意: 在上面的輸出中,添加了一些空白行,以便更好地突出顯示 make 發(fā)起的每個(gè)步驟 。
make 實(shí)用工具檢查文件(頭文件、源代碼、數(shù)據(jù)文件和目標(biāo)文件)的修改日期,并編譯合適的 C 源文件 。最初,make 將重新編譯所有內(nèi)容,因?yàn)椴淮嬖谌魏文繕?biāo)文件或者編譯目標(biāo) 。正如您可以看到的,用于編譯目標(biāo)的規(guī)則還包括一些中間步驟,其中使用了一些相關(guān)的工具,如 sed 和 awk,以產(chǎn)生在后續(xù)的步驟中將要使用的頭文件 。

推薦閱讀