chapter 12-01

移植的注意事項

此系統可以編譯到使用 Linux 的不同硬體平台上執行, 此章節說明移植的注意事項.


在不同硬體平台上使用

mint_cm/mcm_build/mcm_build.c 的一段程式 :
typedef MCM_DTYPE_EK_TD MCM_DTYPE_LEN_TD;
MCM_DTYPE_LEN_TD ek_len;


變數 ek_len 用來計算路徑中 key 或 index 部分的最大長度, 之後計算整個路徑可能需要的最大緩衝空間. 因為是 mcm_build 在計算, 而計算後的緩衝空間會是 mcm_daemon 在使用, 所以必須注意 sizeof(MCM_DTYPE_LEN_TD) 在二邊平台的的大小.

在 mcm_build 使用的平台上的大小必須大於或等於在 mcm_daemon 使用的平台上的大小.

情況-01 :
在 mcm_build 平台上的大小是 4, 在 mcm_daemon 平台上的大小是 2, 不用調整.

情況-02 :
在 mcm_build 平台上的大小是 4, 在 mcm_daemon 平台上的大小是 4, 不用調整.

情況-03 :
在 mcm_build 平台上的大小是 4, 在 mcm_daemon 平台上的大小是 8, 需要調整.
MCM_DTYPE_LEN_TD 的最原始型態是 unsigned int, 加大變成 :
typedef unsigned long long int MCM_DTYPE_LEN_TD;



資料類型的調整

在資料模型的建立章節中列出的 [member 的資料類型] 可以將用不到的或是系統不支援的資料類型關閉.
MCM_SUPPORT_DTYPE_*
(mint_cm/mcm_lib/mcm_lheader/mcm_type.h)
0 : 關閉, 1 : 開啟
定義 資料類型 使用的轉換函式
MCM_SUPPORT_DTYPE_RK rk strtoul
MCM_SUPPORT_DTYPE_ISC isc strtol
MCM_SUPPORT_DTYPE_IUC iuc strtoul
MCM_SUPPORT_DTYPE_ISS iss strtol
MCM_SUPPORT_DTYPE_IUS ius strtoul
MCM_SUPPORT_DTYPE_ISI isi strtol
MCM_SUPPORT_DTYPE_IUI iui strtoul
MCM_SUPPORT_DTYPE_ISLL isll strtoll
MCM_SUPPORT_DTYPE_IULL iull strtoull
MCM_SUPPORT_DTYPE_FF ff strtof
MCM_SUPPORT_DTYPE_FD fd strtod
MCM_SUPPORT_DTYPE_FLD fld strtold
MCM_SUPPORT_DTYPE_S s:$(size)
MCM_SUPPORT_DTYPE_B b:$(size)


需要的檔案

此系統可以編譯到使用 Linux 的不同硬體平台上執行, 這邊說明哪些檔案需要複製到目標平台.


必須在 PC 上執行的部分 :
mint_cm/mcm_build
編譯 mcm_build
此程負責分析資料模型並產生系統需要的程式定義檔和相關資料檔.


在目標平台上執行的部分 :
mint_cm/mcm_build
產生 mcm_model_profile.txt
撰寫 mcm_store_profile_default.txt
程式分析完資料模型後會產生系統需要的資料模型檔, 以及撰寫系統需要的資料預設值檔, 必須複製到目標平台上.

mint_cm/mcm_daemon
編譯 mcm_daemon
主程式, 必須複製到目標平台上.

mint_cm/mcm_daemon/mcm_module
編譯 mcm_module.lib
自訂的資料處理函式庫, 必須複製到目標平台上.

mint_cm/mcm_lib/mcm_lulib
編譯 libmcm_lulib_api.so
提供介面給用戶端程式做資料的存取, 有用戶端程式或是網頁端程式或指令程式需要就必須複製到目標平台上.

mint_cm/mcm_lib/mcm_lklib
編譯 mcm_lklib_api.ko
提供介面給核心端程式做資料的存取, 有核心端程式需要就必須複製到目標平台上.

mint_cm/mcm_cgi
編譯 mcm_cgi_config.cgi
編譯 mcm_cgi_upload.cgi
處理網頁端程式做資料的存取和檔案的上傳, 有網頁端程式需要就必須複製到目標平台上.
mint_cm/mcm_cgi/mcm_cgi_config_module
編譯 mcm_cgi_config_module.lib
處理網頁端程式進階模式的資料讀取, 有網頁端程式需要就必須複製到目標平台上.
mint_cm/mcm_cgi/mcm_cgi_upload_module
編譯 mcm_cgi_upload_module.lib
處理網頁端程式上傳的檔案, 有網頁端程式需要就必須複製到目標平台上.

mint_cm/mcm_lib/mcm_jslib
放置 jquery_main.js
放置 json3.js
放置 jquery_form.js
放置 mcm_jslib_api.js
產生 mcm_jslib_data_info_auto.js
提供介面給網頁端程式做資料的存取和檔案的上傳, 有網頁端程式需要就必須複製到目標平台上.

mint_cm/mcm_command
編譯 mcm
指令程式, 在 Shell Script 中需要做資料的存取就必須複製到目標平台上.

mint_cm/http_server/mini_httpd/last
編譯 mini_httpd
撰寫 mini_httpd.conf
網頁伺服器和設定檔, 有網頁端程式需要就必須複製到目標平台上.

mint_cm/http_server/mini_httpd/last/mint_aam/maam_lib/maam_jslib
放置 jquery_cookie.js
放置 md5.js
放置 maam_jslib_api.js
提供介面給網頁端程式做登入登出, 有網頁端程式需要就必須複製到目標平台上.

mint_cm/http_server/mini_httpd/last
編譯 libmaam_lulib_api.so
提供介面給用戶端程式存取 session, 有用戶端程式需要就必須複製到目標平台上.

mint_cm/Makefile
變數 CROSS 可以指定要使用的交叉編譯器.

為了測試方便, 預設所有使用到 mcm_lulib_api 的程式都使用靜態連結, 在實際使用上可以改為動態連結.
USE_STATIC_MCM_LIB
(mint_cm/Makefile)
YES 使用靜態鏈結
NO 使用動態鏈結

為了測試方便, 預設所有使用到 maam_lulib_api 的程式都使用靜態連結, 在實際使用上可以改為動態連結.
USE_STATIC_MAAM_LIB
(mint_cm/Makefile)
YES 使用靜態鏈結
NO 使用動態鏈結