nfs ganesha 編譯選項

2021-09-26 19:57:34 字數 4293 閱讀 8835

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 只啟用預處理,編譯,和彙編,也...