999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

從Windows到Linux的C程序移植研究

2018-07-10 11:19:20夏永紅匡華星
雷達與對抗 2018年2期
關鍵詞:功能模塊程序計算機

蔣 躍,田 田,夏永紅,匡華星

(中國船舶重工集團公司第七二四研究所,南京 211153)

0 引 言

當前,作為艦艇平臺發展的革命性技術之一的“高性能公共計算環境”已經得到了越來越多的關注。作為下一代艦船的信息整合與處理中心,通過“高性能公共計算環境”可以對平臺內的所有資源(包括射頻資源、面陣資源、信息處理資源等)進行統一任務調度和聯合資源分配,以充分發揮系統整體資源優勢。

由于具有高效性、穩定性、安全性等特點[1],Linux系統更適合于作為“高性能公共計算環境”的操作系統。美國的DDG-1000全艦計算環境就采用了刀片服務器架構,操作系統為Red Hat Linux。國內的中標麒麟桌面操作系統采用強化的Linux內核,實現對X86及國產CPU平臺的全面兼容。基于上述原因,開展了基于Linux操作系統開發環境的雷達全流程仿真軟件開發和仿真試驗,為雷達信息處理應用在Linux操作系統上的開發實現積累經驗。本文針對從Windows到Linux的C程序移植,介紹了Linux系統的安裝和開發環境的搭建,并探討了C程序移植的方法和經驗。

1 Linux系統安裝和開發環境搭建

1.1 Linux系統安裝

在現有的Windows系統下安裝Linux系統有兩種方式可以選擇:一是一般安裝,即分配單獨的硬盤分區用來安裝Linux系統;二是虛擬機安裝,即使用軟件模擬一個具有完整硬件系統功能的計算機并安裝Linux系統。一般安裝可以實現計算機的雙系統,但在使用時只能選擇進入一種操作系統。而虛擬機安裝則能保證新系統在一個完全隔離的環境中工作,虛擬機中安裝和運行的應用程序就像在真正的計算機上一樣。[2]同時,對于Windows用戶來說,虛擬機只是物理計算機上的應用程序,即使虛擬機中安裝的系統發生崩潰也不會影響物理計算機上的Windows系統。更重要的是,虛擬機安裝可以實現Windows系統與Linux系統下資源的拷貝共享,有需要的話完全可以在物理計算機上模擬多臺虛擬的計算機,并且安裝好的虛擬機也可以拷貝到其他物理計算機上使用。因此,本文選擇使用虛擬機在現有Windows系統下安裝Linux操作系統。

在當前的主流虛擬機軟件中,VMware在多操作系統支持和執行效率上都具有比較明顯的優勢,因此本文選擇VMware軟件來創建虛擬機。本文所使用的虛擬機安裝了CentOS 7版本的Linux操作系統。安裝完成后在Windows系統下只需要打開VMware軟件,啟動虛擬機即可登錄CentOS 7,實現Windows與Linux系統的同時工作。在VMware軟件中還自帶了一種增強工具VMware Tools,可以實現物理計算機(Windows)和虛擬機(Linux)或者兩臺虛擬機之間的拷貝功能,方便資源共享和用戶使用。

1.2 開發環境搭建

Eclipse[3]是一個開源免費的基于Java撰寫的集成開發環境(IDE),提供圖形化的編輯和調試界面,可以跨平臺,在Windows和Linux系統下都可以使用。另外,Eclipse本身是可擴展的開發平臺,通過插件可以實現目前主流程序語言諸如C/C++、C#、Java、PHP、Python等等的程序開發。因此,本文選擇在Linux系統下安裝Eclipse來進行C/C++的程序開發。

Eclipse開發程序的流程一般為創建工程->創建文件->編輯文件->編譯工程->運行或調試。由于本文是將Windows系統下的C程序移植到Linux系統中,在創建工程后只需將編輯好的各個工程文件導入即可,再對工程進行編譯、運行或調試。

2 C程序移植方法

在將C程序從Windows系統移植到Linux系統的過程中,由于Linux下gcc默認的編譯規則是比VC嚴格的,在VC中編譯通過的程序放到Linux下卻可能出現許多警告錯誤[4]。根據實際的C程序移植經驗,在移植過程中需要注意以下幾方面:

(1) 確保文件名的大小寫正確

雖然在C/C++語言中是區分大小寫的,但對于程序中包含的頭文件,在Windows系統下其文件名大小寫都可以正確編譯,而在Linux系統下卻必須要頭文件的大小寫正確。這是由于ext2文件系統對文件名的大小寫敏感,避免在編譯中出現找不到頭文件的錯誤。

(2) 注意各個系統下獨有的頭文件

在Windows系統下,程序中通常會包含頭文件“windows.h”,若程序需要實現網絡通信,則需包含頭文件“winsock2.h”或者MFC下的“afxsock.h”。這些頭文件都是Windows系統獨有的。因此,程序在移植到Linux系統后,需要將這類頭文件以及一些Windows系統的常量定義說明注釋掉,并且添加Linux系統下對應的頭文件,例如頭文件“sys/socket.h”即可支持實現網絡通信。

(3) 注意VC中獨有的數據類型和關鍵字

VC中__int16、__int32、__int64等獨有的數據類型在Linux系統中編譯器并不支持,無法正確識別這些數據類型。因此,在程序移植后可以將這些數據類型在VC中的定義語句復制到一個頭文件中,并在程序中包含該頭文件。而對于VC中獨有的關鍵字如WORD、DWORD、__asm等等,應盡量避免在程序中使用,或者在移植后用“#ifdef”和“#endif”重新編寫。因此,為提高程序在不同平臺之間的可移植性,在程序編寫過程中應該避免直接使用各編譯器獨有的數據類型或關鍵字。

(4) 注意修改相應函數原型

對于程序中使用標準C/C++語言編寫的函數,在不同系統下基本都可以適用。但是,對于一些系統調用函數,由于Linux與Windows有所區別,需要改變相應的函數原型。例如,要實現網絡通信功能,在Windows中使用MFC下CSocket編程,調用CSocket::Create初始化、CSocket::Bind綁定地址端口、CSocket::SendTo發送內容、CSocket::Close關閉等等,而在Linux中相應地通過socket、bind、sendto、close等函數實現這些功能。若要實現文件指針的移動,在Linux中用fseeko64函數代替Windows下的_fseeki64函數來將文件指針移動到指定的位置。在計算程序運行耗時方面,Windows系統使用QueryPerformanceFrequency和QueryPerformanceCounter函數來計時,而Linux系統下則可以用gettimeofday函數實現計時功能。因此,在程序移植中要實現相同的功能需要改變相應的函數原型。

(5) 注意編譯環境的配置

在Windows系統中,使用VC編寫的工程需要添加頭文件引用路徑以及庫文件的引用路徑和鏈接。相應地,在Linux系統中也要對Eclipse的編譯環境進行配置。由于在程序中采用了Intel IPP函數庫進行加速計算,并且在VC中利用IPP的多線程靜態函數庫進行內部并行加速,在程序移植后也需要進行修改配置。因此,在Linux系統中需要先安裝相應版本的Intel IPP,并且在Eclipse中修改工程屬性,配置IPP的環境變量、頭文件引用路徑、庫文件引用路徑和鏈接。在配置完編譯環境可以正確編譯后,還需要在運行或調試配置中也相應配置IPP的環境變量。

(6) 注意系統文件或路徑

在Windows與Linux系統中,各自的路徑標識符是不同的,因此程序移植后需將路徑中的“\”改為“/”。另外,由于Linux系統中對于文件或者目錄的權限是分為擁有者、群組和其他的,在對文件進行寫操作時需要注意修改文件或目錄的權限,否則無法進行寫操作。

以上幾方面僅是實際C程序移植過程中出現的需要注意的問題。但是,在具體的程序移植過程中可能還會出現更多更復雜的情況,例如移植Windows系統下用MFC編寫的圖形界面程序、多進/線程程序等等都還需要分析程序設計結構,理解程序邏輯模塊,才能更好地完成程序移植。

3 移植結果分析

某型雷達的全流程處理程序原是在Windows系統的VC中實現的,本文將其移植到Linux系統,程序成功編譯并運行,輸出結果與VC程序保持一致,成功完成移植工作。本文所使用的物理計算機為Windows系統,內存為32 GB,處理器為i7-6700K 四核八線程;而創建的虛擬機為Linux系統,內存為4 GB,處理器為雙核。由于全流程處理程序運行所需內存占比較小,且程序內部僅利用雙核進行并行加速,處理結果基本不受兩個系統環境的計算資源影響。下面對兩個系統下程序各功能模塊的處理耗時結果進行對比分析,對比結果如表1所示。

表1 兩個系統下程序各功能模塊處理耗時對比

從表1中可以看出,在讀取數據上Linux系統耗時減少了約20 s,查找包頭兩者耗時差不多,信號處理部分Linux耗時減少了約7 s。雖然在點跡凝聚時Linux耗時多了近5 s,但在發送和記錄點跡以及輸出和發送視頻方面則有了較大提升,耗時節省了約33 s。統計整個程序所有功能模塊的處理時間,Linux系統的耗時比Windows節約了56 s。這是由于Linux系統簡單、占用內存少,可以利用最少的資源最短的時間實現所有功能,而且Linux系統在硬件支持和網絡性能方面較Windows都占優勢。

表2給出了信號處理中各功能模塊的處理耗時對比。從中可以發現,兩個系統下信號處理的各功能模塊的合計耗時與表1中基本相符,且在脈沖壓縮部分Linux的耗時減少更為明顯。

表2 兩個系統下信號處理各功能模塊處理耗時對比

4 結束語

本文針對從Windows到Linux的C程序移植,介紹了Linux系統的安裝和開發環境的搭建,根據實際程序移植經驗給出了C程序移植的方法和需要注意的問題,同時對實際程序各功能模塊的處理耗時結果進行了對比分析,程序在Linux系統下耗時更短。

猜你喜歡
功能模塊程序計算機
計算機操作系統
基于計算機自然語言處理的機器翻譯技術應用與簡介
科技傳播(2019年22期)2020-01-14 03:06:34
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
信息系統審計中計算機審計的應用
消費導刊(2017年20期)2018-01-03 06:26:40
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于ASP.NET標準的采購管理系統研究
軟件導刊(2016年9期)2016-11-07 21:35:42
輸電線路附著物測算系統測算功能模塊的研究
M市石油裝備公服平臺網站主要功能模塊設計與實現
石油知識(2016年2期)2016-02-28 16:20:16
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
主站蜘蛛池模板: 日本91视频| 欧美a级在线| 黄色不卡视频| 秋霞国产在线| 亚洲人成人伊人成综合网无码| 日韩a在线观看免费观看| 国产真实自在自线免费精品| 超清无码熟妇人妻AV在线绿巨人| 任我操在线视频| 国产主播在线观看| 中文字幕在线一区二区在线| 亚洲黄色高清| 亚洲一区二区三区在线视频| 一本一道波多野结衣av黑人在线| 亚洲欧美另类专区| 国产一级毛片yw| 中文国产成人久久精品小说| 日韩最新中文字幕| 亚洲免费福利视频| 亚洲an第二区国产精品| 国产亚洲精品yxsp| 丝袜久久剧情精品国产| 国产精品第页| P尤物久久99国产综合精品| 欧美日韩激情在线| 久久久精品国产亚洲AV日韩| 69精品在线观看| 996免费视频国产在线播放| 久久性妇女精品免费| 国产免费好大好硬视频| 国产丝袜一区二区三区视频免下载| 亚洲综合网在线观看| 91娇喘视频| 一级一级特黄女人精品毛片| 国产午夜精品一区二区三区软件| 全裸无码专区| 亚洲美女一区| 一边摸一边做爽的视频17国产| 97超级碰碰碰碰精品| 91精品小视频| 国产一区亚洲一区| 精品自窥自偷在线看| 亚洲二区视频| 国产精品.com| 国产色婷婷视频在线观看| 欧美亚洲国产视频| 国内精品视频| 成人午夜在线播放| 欧美一级在线| 免费 国产 无码久久久| 色婷婷在线影院| 亚洲男人在线天堂| 热伊人99re久久精品最新地| 国产你懂得| 欧美成人免费一区在线播放| 欧美a在线视频| 亚洲国产AV无码综合原创| 色国产视频| 欧美自慰一级看片免费| 午夜限制老子影院888| 久久黄色毛片| 2022国产91精品久久久久久| 无码一区中文字幕| 在线看AV天堂| 欧美午夜精品| 午夜色综合| 亚洲AⅤ无码日韩AV无码网站| 天堂av高清一区二区三区| 欧美一级大片在线观看| 先锋资源久久| 久久婷婷五月综合97色| 亚洲第一精品福利| 国产激爽爽爽大片在线观看| 免费一极毛片| 91人妻日韩人妻无码专区精品| 欧美成人综合视频| 日本精品中文字幕在线不卡| 成年女人a毛片免费视频| 香蕉精品在线| 中文字幕在线视频免费| 玖玖精品在线| 深爱婷婷激情网|