nfs-ganesha編譯:
先回顧一下nfs-ganesha 編譯:
nfs-ganesha 是需要mkdir build 然後cd build 執行cmake -d***x=on/off ../src
nfs-ganesha 編譯選項都是在原始碼中的src/cmakelists.txt 關鍵字:option
nfs-ganesha編譯選項:
1.use_fsal_ceph:build ceph fsal shared library。設定為on,需要cephfs的動態庫。同時在build/fsal生成fsal_cep**件夾及檔案
用於編譯出相應的so檔案。預設是off。
與之一樣的編譯選項:use_fsal_proxy/use_fsal_vfs/use_fsal_xfs/use_fsal_gpfs/use_fsal_mem/use_fsal_gluster/use_fsal_ceph_rgwfs
注意:(1) 如果找不到cephfs的庫的話 即使設定為on 也會修改為off (命令:ldconfig -p |grep cephfs) (2) 新增路徑:src/fsal/cmakelists.txt
2.use_fsal_ceph_rgwfs:build ceph_rgwfs fsal shared library 需要librgw.so(命令:ldconfig -p |grep rgw) rgw版本必須是大於1.1.6版本
3.use_fsal_ceph_mknod:巨集定義 巨集為:use_fsal_ceph_mknod 該巨集決定fsal_ceph_ll_mknod函式是否被編譯
4.use_fsal_ceph_setlk:巨集定義 巨集為:use_fsal_ceph_setlk 該巨集決定ceph_lock_op2函式是否被編譯
5.use_fsal_ceph_ll_lookup_root:巨集定義 巨集為:use_fsal_ceph_ll_lookup_root 該巨集決定fsal_status_t函式的不同邏輯
6.use_fsal_ceph_statx:巨集定義 巨集為:use_fsal_ceph_statx 該巨集決定標頭檔案statx_compat.h中的一批靜態內聯函式是否被編譯
7.use_fsal_ceph_ll_delegation:巨集定義 巨集為:use_fsal_ceph_ll_delegation 該巨集決定ceph_deleg_cb ceph_lease_op2函式是否被編譯
8.use_fsal_ceph_ll_sync_inode:巨集定義 巨集為:use_fsal_ceph_ll_sync_inode 該巨集決定fsal_ceph_ll_setattr函式是否呼叫ceph_ll_sync_inode
9.use_fsal_panfs: 預設為off 為on時 在build/fsal/fsal_vfs下面產生panfs資料夾 panfs是廠商panasas的產品
10.use_fsal_null:預設on 對應**是src/fsal/stackable_fsals/fsal_null
11.use_dbus:預設off 為on時,定義了乙個巨集use_dbus (
12.allocator:此設定是使用分配記憶體時 呼叫介面不同 3個賦值:jemalloc|tcmalloc|libc 預設使用jemalloc 如果沒有安裝jemalloc或是tcmalloc 最終會被設定為libc
13.enable_locktrace:預設off 設定為on時 跟mdcache有關
14.use_man_page:預設為off 為on時 主要是生成使用man命令檢視相關資訊
14.debug_syms:預設為off 為on 相當於加入-g 能夠生成符號表 進行gdb除錯
15.use_gui_admin_tools:預設為on 與生成命令列工具有關 為on時 需要安裝pyqt 相關**路徑:nfs-ganesha/src/scripts/ganeshactl/ganesha/qtui
16.use_admin_tools:預設為off 與命令列工具相關 為on時 生成ganeshactl資料夾 相關**路徑:nfs-ganesha/src/scripts/ganeshactl/
nfs-ganesha預設編譯選項
在build下 執行cmake ../xx/src
預設為on的引數:
use_fsal_proxy=on
use_fsal_vfs=on
use_fsal_xfs=on
use_fsal_gpfs=on
use_fsal_null=on
use_fsal_mem=on
use_blkid = on
_no_xattrd=on
use_gss = on
use_9p=on
_use_9p=on
use_nfs3=on
use_nlm=on
use_gui_admin_tools=on
預設安裝路徑:64位編譯的話:lib_install_dir:path=/usr/lib64
預設配置路徑:sysconfdir:path=/etc
預設程式狀態路徑:sysstatedir:path=/var
綜上,編譯nfs-ganesha與rgw想配合的版本 編譯選項:
use_fsal_xfs=on ---> use_fsal_xfs=off
use_fsal_gpfs=on ----> use_fsal_gpfs=off
use_fsal_ceph_rgwfs=off -----> use_fsal_ceph_rgwfs=on
如果想編譯除錯版本:
debug_syms=off ----> debug_syms=on
編譯
1.非除錯版本:cmake -duse_fsal_xfs=off -duse_fsal_gpfs=off -duse_fsal_ceph_rgwfs=on -duse_admin_tools=on -duse_dbus=on ../***/src
2.除錯版本:cmake -duse_fsal_xfs=off -duse_fsal_gpfs=off -duse_fsal_ceph_rgwfs=on -duse_admin_tools=on -duse_dbus=on -ddebug_syms=on ../***/src
編譯結果存放
nfs-ganesha/build/mainnfsd
相關安裝
除了 上面描述的依賴
還需要安裝libcap(libcap-devel.x86_64) python(安裝python 與生成命令列工具有關) jemalloc(可選)
nfs-ganesha需要安裝的庫及工具:例子centos7
1.userspace-rcu:yum install userspace-rcu.x86_64
2.rpmbuild:yum install rpm-build
注意
1.如果nfs-ganesha確實基於jemalloc編譯的,那麼nfs-ganesha執行環境上面也需要安裝jemalloc
2.use_fsal_panfs 此選項不要設定為on (issue:
3.使用jemalloc編譯nfs-ganesha: issue:
4.-duse_gtest=on 需要安裝lttng gperftools軟體
5.src/config_parse/test_parse.c在編譯config_parse是不被編譯的
6. librgw相關:
//the rgw include headers rgw_include_dir:path=/usr ----> /usr/include/rados librgw.h
//path to a library. rgw_library:filepath=/usr/lib64/librgw.so
//the rgw libraries rgw_library_dir:path=/usr/lib64
VC編譯選項
vc編譯選項 od 禁用優化 預設值 disable optimizations default ox 最大化選項。ogityb2 gs maximum opts.ogityb1 gs og 啟用全域性優化 enable global optimization oy 啟用框架指標省略 enable ...
PHP編譯選項
編譯擴充套件庫 usr local php bin phpize configure with php config usr local php bin php config make make install ln s ext sockets modules sockets.so sockets....
GCC編譯選項
gcc g 在執行編譯工作的時候,總共需要4步 1.預處理,生成.i的檔案 預處理器cpp 2.將預處理後的檔案不轉換成組合語言,生成檔案.s 編譯器egcs 3.有彙編變為目標 機器 生成.o的檔案 彙編器as 4.連線目標 生成可執行程式 鏈結器ld 引數詳解 c 只啟用預處理,編譯,和彙編,也...