一般源代碼提供的程序安裝需要通過配置、編譯、安裝三個步驟;
查詢可用的配置選項
./configure --help
配置路徑
./configure --prefix=/usr/local/snmp
--prefix是配置使用的最常用選項,設(shè)置程序安裝的路徑;
編譯使用make編譯
make -f myMakefile
通過-f選項顯示指定需要編譯的makefile;如果待使用makefile文件在當(dāng)前路徑,且文件名為以下幾個,則不用顯示指定:
makefile Makefile
系統(tǒng)學(xué)習(xí)makefile的書寫規(guī)則,請參考 跟我一起學(xué)makefile [#]_
CMake是一個跨平臺的安裝(編譯)工具,可以用簡單的語句來描述所有平臺的安裝(編譯過程)。他能夠輸出各種各樣的makefile或者project文件。使用CMake,能夠使程序員從復(fù)雜的編譯連接過程中解脫出來。它使用一個名為 CMakeLists.txt 的文件來描述構(gòu)建過程,可以生成標(biāo)準(zhǔn)的構(gòu)建文件,如 Unix/Linux 的 Makefile 或Windows Visual C++ 的 projects/workspaces 。
makefile編譯過程中所依賴的非標(biāo)準(zhǔn)庫和頭文件路徑需要顯示指明
CPPFLAGS -I標(biāo)記非標(biāo)準(zhǔn)頭文件存放路徑
LDFLAGS -L標(biāo)記非標(biāo)準(zhǔn)庫存放路徑
如果CPPFLAGS和LDFLAGS已在用戶環(huán)境變量中設(shè)置并且導(dǎo)出(使用export關(guān)鍵字),就不用再顯示指定;
make -f myMakefile LDFLAGS='-L/var/xxx/lib -L/opt/mysql/lib'
CPPFLAGS='-I/usr/local/libcom/include -I/usr/local/libpng/include'
鏈接多庫時,多個庫之間如果有依賴,需要注意書寫的順序,右邊是左邊的前提;
g++ -o unixApp unixApp.o a.o b.o
選項說明:
應(yīng)用:查詢宏展開的中間文件:
在g++的編譯選項中,添加 -E選項,然后去掉-o選項 ,重定向到一個文件中即可
g++ -g -E unixApp.cpp -I/opt/app/source > midfile
查詢應(yīng)用程序需要鏈接的庫
$ldd myprogrammer
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000039a7e00000)
libm.so.6 => /lib64/libm.so.6 (0x0000003996400000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000039a5600000)
libc.so.6 => /lib64/libc.so.6 (0x0000003995800000)
/lib64/ld-linux-x86-64.so.2 (0x0000003995400000)
.. note
關(guān)于ldd的使用細(xì)節(jié),參見 :ref:`ldd`
安裝做的工作就簡單多了,就是將生成的可執(zhí)行文件拷貝到配置時設(shè)置的初始路徑下
$make install
其實 install 就是makefile中的一個規(guī)則,打開makefile文件后可以查看程序安裝的所做的工作;
configure make install g++