1. 程式人生 > >【Linux開發】Linux及Arm-Linux程式開發筆記(零基礎入門篇)

【Linux開發】Linux及Arm-Linux程式開發筆記(零基礎入門篇)

Linux及Arm-Linux程式開發筆記(零基礎入門篇) 

目錄

一、Arm-Linux程式開發平臺簡要介紹... 3

1.1程式開發所需系統及開發語言... 3

1.2系統平臺搭建方式... 4

二、Linux開發平臺搭建... 5

2.1安裝虛擬工作站... 5

2.2安裝Linux虛擬機器... 5

2.3虛擬機器的一些基本配置... 7

2.3.1建立共享目錄... 8

2.3.2調整桌面解析度... 9

2.4安裝軟體... 11

三、Fedora-linux系統... 11

3.1控制終端的基本操作命令... 12

3.2程式設計工具簡介... 12

3.2.1 Fedora-Eclipse CDT. 13

3.2.2 Qt庫及Qt介面設計軟體... 14

四、使用Eclipse CDT開發Linux程式... 15

4.1建立控制檯程式... 15

4.2建立Linux視窗程式... 16

五、使用Eclipse開發Arm-linux程式... 19

5.1 Arm-linux硬體平臺... 19

5.2開發控制檯程式... 20

5.2.1使用Eclipse CDT編寫程式碼... 20

5.2.2建立交叉編譯環境... 20

5.2.3編譯並執行程式... 22

5.3一些常用的軟體介紹... 23

5.4開發arm-linux視窗程式... 24

5.4.1建立Qt交叉編譯環境... 25

5.4.2編譯生成可執行窗體程式... 26

六、高階Linux程式設計... 28

6.1多檔案控制檯專案... 29

6.2多檔案Qt專案... 29

6.2.1使用Qt Designer設定介面... 29

6.2.2多檔案Qt開發時的一些經典錯誤... 31

6.3關於makefile. 32

七、學習資料... 32

前言:本文記錄了自己從一個完全不懂Linux的人如何一步步學會Linux程式開發的過程。當然也希望本文能夠達到它的目的,讓那些和我一樣沒有任何基礎的人也能快速入門Linux程式開發。

    Arm-Linux程式的開發並不像我們以前接觸的Windows程式開發那樣,關於平臺的搭建就繁瑣很多,所以在正式進入程式開發之前先對這種開發模式進行簡要介紹,讓一個即使沒有任何Linux開發經驗的程式設計師也能夠看懂後面的內容。

1.1程式開發所需系統及開發語言

    開發arm-linux程式至少需要三種系統:

    Windows系統。    主要用來檔案傳送和一些簡單的文字檔案編輯。這個系統其實並非必需,只是因為目前PC機上最流行的系統仍然是Windows系統,我們的很多關於PC的檔案和資料的操作習慣都是在Windows系統上養成的,已經對其形成了嚴重的依賴,所以Windows系統扮演著的“輔助開發系統”的角色。

    PC-Linux系統。 
    在此係統上安裝arm-Linux交叉編譯器後,就可以對程式碼文字檔案進行編譯,生成可在arm-Linux系統中執行可執行程式。此係統被稱為“Linux宿主機”,我們對Linux程式的開發工作(包括程式碼編寫、除錯和編譯生成可執行檔案)基本上就是在此係統上進行的。

    Arm-Linux系統。 
    Arm-Linux程式執行的平臺。此係統的硬體載體是一塊小型的嵌入式arm板,我們在Linux宿主機上開發好程式並編譯生成arm-linux可執行程式後,將可執行程式檔案傳送到嵌入式arm板中,然後就可以在arm板上直接執行此程式了。

三種系統的職能和聯絡如下圖:

image

“三系統”職能和關聯圖

  關於每個系統的職能及操作還有檔案如何傳送交流都在後面詳細介紹。

  關於開發語言,因為目前購買的Arm-Linux嵌入式板提供的編譯庫都是C/C++的,所以一般選擇C/C++進行程式設計。

1.2系統平臺搭建方式

  關於“三系統”的搭建方式,有兩種方法:三臺分立的單系統機器組合或者一臺雙系統PC機和一臺單系統Arm板機器。但是不管採用哪種組合方式,各種系統的職能都是一樣的,而且都是通過FTP、Telnet或者SSH等網路協議進行檔案傳輸交流。

  “三機器”組合模式。將三個系統分別安裝在三臺機器上並將三臺機器組建區域網。

  “兩機器”組合模式。在PC機上利用虛擬工作站可以同時執行兩個系統,虛擬機器上的Linux系統基本可以完成所有的實體PC-Linux機器的所有任務,當然也能夠組建區域網。

clip_image004

“三機器”組合模式圖

clip_image006

“兩機器”組合模式圖

  如果開發人員對機器效能要求比較高,那麼建議採用“三機器”組合模式。因為“兩機器”組合模式要求一臺機器執行雙系統,每個系統都需要分配一定的硬體資源,可能會對每個系統執行的流暢程式都造成影響。

  如果開發人員只進行一些簡單的程式開發,則建議採用“兩機器”組合模式。這樣可以節省硬體裝置的投資,而且開發環境的搭建、開發的流程等等都會簡單一些。而且下面的內容都是基於這種“兩機器”組合的開發模式。

2.1安裝虛擬工作站

  目前比較流行的虛擬工作站比較多,推薦使用VM-ware WorkStation。建立虛擬工作站的目的就是為了使一臺機器同時執行多個不同型別的系統,方便開發人員進行跨平臺開發應用程式。

  (關於VMware,可以到網上搜索到詳細介紹和使用方法,在此不再贅述)

2.2安裝Linux虛擬機器

  安裝虛擬機器的過程和安裝實體機一樣,唯一的區別是,虛擬機器安裝是從VMware中開啟並安裝的。先準備Linux安裝檔案,一般可以到網上下載到Linux的iso安裝檔案,然後從VMware中安裝此係統。

  (關於虛擬機器安裝,在網上可以搜尋到詳細的步驟,在此不再贅述)

  幾點建議:

  1.安裝Fedora-10並選擇完全安裝,即把所以的包和選項都勾上。這樣在安裝完畢後,系統就自帶了很多開發工具和相關的庫,避免自己去重新進行煩瑣的基本開發平臺搭建。

  2.在VMware中為虛擬系統配置硬體資源。建議分配硬碟空間16G,記憶體1G以上。因為今後主要的Linux程式開發工作是在虛擬機器上進行了,所以為了保證虛擬機器流暢執行,需要分配比較豐富的硬體資源。

  在第一次從ISO檔案中安裝完畢虛擬機器後,在安裝目錄下面會生成一系列的檔案,將這些檔案進行備份後,在其它機器上安裝虛擬機器的時候就花幾個小時去從ISO中安裝了,將這個目錄下的檔案複製到相應的目錄下面(在第一次從ISO中安裝的時候設定的目錄相同),然後只需要從VMware中開啟此目錄下的檔案就行了。

執行VMware Workstation中的【View】--【Home】,調出Home檢視,然後開啟虛擬工作站系統檔案。

clip_image008

  開啟後,就可以看到一個虛擬機器的硬體資源配置了。這些引數有一部分是在只能在初次使用iso安裝的時候配置的,比如硬碟大小。另外一些引數比如記憶體大小、共享目錄等等可以在後期隨時人工更改的。

詳細設定內容,到網上可以找到很多相關內容,在此不再贅述

clip_image010

  兩種方法的區別就是WinXp的安裝盤和Ghost盤的區別吧。

  安裝完畢Fedora後,就可以從虛擬工作站中啟動Fedora Linux系統了。系統桌面如下:

clip_image012

2.3虛擬機器的一些基本配置

  在第一次安裝完畢虛擬機器後開啟虛擬機器,預設的解析度是800*600,同時沒有全能共享目錄。為了獲得比較好的操作介面,同時方便檔案共享和轉移,需要進行一些基本的配置。

2.3.1建立共享目錄

  在同一個硬體PC機上執行的兩個系統。Windows實體系統用來做一般的用途,比如聯網,處理文件等等;Fedora Linux虛擬系統則用來開發Linux程式並進行編譯生成可執行檔案。

  先需要安裝vmware tools

  在VMware上面,選擇選單【VM】--【Install VM tools】,然後在Linux虛擬機器上會生成目錄/media,同時裡面產生一個rpm檔案。

  然後開啟控制終端並su登入超級使用者:

cd /media

rpm –ivh VMwareTools-7.8.5-156735.i386.rpm

cd /usr/bin

然後在/usr/bin下面看到wmware-config-tools.pl

再在Teminal中輸入wmware-config-tools.pl

    然後一路回車下去。然後今後就可以建立共享目錄。

  (詳細過程也可以在網上搜索相關內容

clip_image014

    共享目錄的好處是可以將這些檔案在Windows系統中提取出來,然後可以通過我們熟悉的windows系統進行網路傳輸和一些其它命令操作。這個設定在後面程式開發的時候會提到其使用方法。

    在VMware中建立共享目錄,執行選單命令【VM】--【Settings…】

clip_image016

  然後在Linux虛擬機器檔案系統中可以找到對應的共享目錄:/mnt/hgfs/xplinux

clip_image018

  建立共享目錄可以方便虛擬機器和實體機進行檔案交流。例如,我們可以將在Linux機器上編譯生成好執行檔案放置到共享目錄中,然後可以通過Windows機器提取出來並通過網路傳送到arm-linux嵌入式板上。

2.3.2調整桌面解析度

    在VMware工作站中調整虛擬機器桌面解析度。一般預設是800*600,而且現在的顯示器,一般是1024*768甚至更高,以我目前使用的電腦顯示器為例,解析度是1440*900。需要將虛擬機器桌面解析度進行適當調整,然後全屏,那麼就可以獲得比較友好的操作介面。

    在VMware中啟動虛擬機器,虛擬機器啟動後的登入介面如下:

clip_image020

    然後登入系統,設定解析度,系統選單:

    【System】--【Preferences】--【Hardware】--【Screen Resolution】

clip_image022

clip_image024

    設定好解析度後,就可以在獲得全屏狀態的Linux操作介面了。

clip_image026

2.3.2其它設定

    比如設定桌面背景,系統字型,還有資源管理器的模式等等,這些可以自己去實地操作並進行熟悉。

2.4安裝軟體

    雖然Fedora已經自帶了一些必要的軟體,如Open Office辦公軟體,gedit記事本軟體,Firefox網頁瀏覽器等等。但是既然是作業系統,我們也可以安裝一些我們需要的軟體。比如中文輸入法(如:小企鵝輸入法),聊天工具(如QQ)等等。

    注意:在Terminal終端中安裝程式的時候需要啟用su超級使用者許可權。

    Fedora-linux虛擬機器安裝完畢並進行基本設定後,就可以開始了程式開發環節了。在正式開始程式開發時,還需要對Linux的一些基本程式設計工具進行簡要介紹,當然如果已經有此基礎的,可以直接略過這一章。

3.1控制終端的基本操作命令

    執行系統選單命令【Applications】--【System Tools】--【Terminal】,開啟Terminal終端:

clip_image028

    熟悉Windows系統的DOS操作介面的人肯定也會對此操作終端也不會陌生。通過在Terminal中輸入命令,使用者可以很方便地完成Linux下的一系列操作,在正式進入自主程式設計之前,使用者有必要對下面一些最基本命令進行熟悉(其它的命令在專案需要的時候再到網上查詢相關資料)。

檔案操作命令

檔案/資料夾的建立、修改、複製、刪除、移動等等。(如rm/mv/vi/cat等等)

網路設定命令

個性IP、開啟FTP、開啟Telnet、開啟SSH等等。(如ifconfig/telnetd等等)

使用者管理命令

系統使用者的新增、刪除、密碼修改等等。(如,addusr/passwd等等)

檔案編譯命令

這個涉及到編譯環境的建立,將在後面正式進入到自主程式設計時進行詳細介紹。

    雖然目前Fedora為使用者提供了比較良好的操作介面,但是Linux最初是從命令列的作業系統發展起來的,很多強大的功能都是需要依靠Terminal控制終端來實現的,所以作為開發人員有必要先對這些基本命令進行熟悉並熟練操作。

3.2程式設計工具簡介

    如果在安裝Fedora的時候,選擇的是完全安裝,系統會自帶很多開發工具。其中Fedora -Eclipse CDT和Qt庫及相關設計器Qt Designer是我們今後開發的主要工具。

當然,如果使用者沒有選擇安全安裝,則可以到網上下載到各類開發工具的安裝檔案,並自己進行安裝。

3.2.1 Fedora-Eclipse CDT

    在Fedora中執行系統選單【Application】--【Programming】--【Eclipse】

clip_image030

    然後就可以看到Fedora Eclipse的啟動畫面

clip_image032

    然後就是下面就是Eclispe的IDE環境了,有過Windows下的Java程式設計經驗的人來說,這個介面是再熟悉不過了,完全可以直接過渡到Linux下的C/C++程式開發上來,這樣就極大地減少了程式設計師的學習週期。

clip_image034

    Eclipse的好處,第一就是開源,第二就是免費,第三就跨平臺。

    因為開源,所以可擴充套件性很強,Eclipse實際上就是一個萬能的程式開發環境,只需要在設定中對相關語言的庫進行引用並連線相應的編譯器,就可以對基於任何語言的程式進行開發;因為免費,所以省去了註冊軟體等等瑣事。因為跨平臺,所以當用戶進行跨平臺程式設計的時候,可以極大減少學習週期。

    Eclispe在Windows平臺下一般都是作為Java的開發環境,用來開發Java桌面應用程式和Jsp網頁應用程式甚至目前比較流行的Android手機終端軟體。在Linux下面對C/C++的庫編譯器進行了連線後,則成為Linux下的C/C++開發環境,在Linux下安裝JDK後則可以進行Linux下的Java程式設計,如果給Linux系統安裝tomcat網頁伺服器,則可以進行Linux下的網頁應用程式開發,如果給Linux安裝mysql資料庫服務,則可以進行資料庫連線操作等等(因為目前我們的目標主要是arm-linux視窗程式開發,所以主要對C/C++進行研究)。

3.2.2 Qt庫及Qt介面設計軟體

    如果只是編寫C/C++控制檯軟體,則只需要Eclipse CDT就完全可以解決。但是如果要進行窗體化程式設計,就需要引用一些開源的介面庫。例如目前比較流行的Qt庫。

    Qt是諾基亞開發的一個跨平臺的C++圖形使用者介面應用程式框架。它提供給應用程式開發者建立藝術級的圖形使用者介面所需的所用功能。Qt是完全面向物件的,很容易擴充套件,並且允許真正地元件程式設計。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等圖形界 面庫和 Windows 平臺上的 MFC,OWL,VCL,ATL 是同類型的東西,但Qt具有優良的跨平臺特性、面向物件 、豐富的API、大量的開發文件等優點。

    在Eclipse中對專案Build選項進行設定,對Qt庫進行連線,然後就可以進行Linux下的Qt程式進行開發了。

    因為Eclipse沒有提供視覺化的窗體程式設計器,所以需要藉助第三方工具,QtDesigner可以很好的解決Qt的UI設計問題並編譯生成對應的*.h和*.cpp檔案(具體的操作步驟將在下面的內容中詳細介紹)。

clip_image036

    所謂“工欲善其事,必先利其器”,前面花了大量篇幅來介紹,都是為了“磨刀”,現在開始進入“砍柴”環節。下面將以Eclipse CDT作為開發環境來介紹Linux和arm-linux程式開發的一般方法。

4.1建立控制檯程式

    用Eclipse CDT建立基於C++的“Hello World”控制檯程式。

    開啟Eclipse開發環境。執行【File】--【New】--【C++ Project】

clip_image038

    然後進入到C++ Project嚮導,有C++的Hello World模板

clip_image040

    點選Finish,然後Eclispe就會建立一個基於C++的HelloWorld專案,執行程式後,能夠在控制檯中輸出“Hello World”:

clip_image042

    說明:如果是開發控制檯程式,則不需要進行任何其它設計,只需要直接編寫C++程式碼即可,不用對編譯庫和編譯器進行設定,Eclipse已經為我們自動完成了這些內容。

4.2建立Linux視窗程式

    就像在Window環境下,如果要用C++開發視窗程式,我們一般需要使用Windows API或者MFC。同樣,在Linux環境下,我們可能在C++專案中引用Qt庫來進行Linux下的視窗程式開發。

    在完整版的Fedora中,自帶了Qt的庫,在目錄/usr/lib下面:

clip_image044

    系統預設自帶有兩個版本的Qt庫qt-3.3和qt4,一般我們用qt-3.3。

    編寫視窗程式,我們只需要在建立了C++ Project的情況下,對C/C++ Build路徑進行設定,指向qt-3.3的庫即可。主要開發流程如下:

clip_image046

    第一步:使用Eclipse CDT建立C++ Project。

    第二步:設定Build路徑指向Qt。在專案管理器中右擊專案檔案設定專案屬性,在C/C++ Build的Settings的Tool Settings中進行設定。

clip_image048

    【GCC C++ Compiler】--【Directories】新增包含的檔案路徑:/usr/lib/qt-3.3/include。這個是C++的編譯器包含的標頭檔案路徑,因為是建立的C++ Project,所以一定要設定。

clip_image050

    【GCC C Compiler】--【Directories】新增包含的檔案路徑:/usr/lib/qt-3.3/include。這個是設定C語言編譯器包含的標頭檔案路徑,因為有時候C++中會考慮到相容一些C語言的語法和關鍵字,所以最好也進行相關設定。

clip_image052

    【GCC C++ Linker】--【Libraries】新增編譯時引用的庫路徑:/usr/lib/qt-3.3/lib(注意:不要寫成include了)。並設定庫搜尋命令引數:qt-mt。

第三步:編寫引用了Qt庫的C++程式。

第四步:執行程式。

程式執行效果如下圖:

clip_image054

    總結:通過上面對Linux下面的控制檯程式及視窗程式的介紹,我們已經對Linux系統下的簡單程式開發流程有了簡單瞭解。下面開始介紹arm-Linux程式的開發。

五、使用Eclipse開發Arm-linux程式 

5.1 Arm-linux硬體平臺 

clip_image056

    Arm-Linux機器採用的是飛凌嵌入式技術公司的FL2440開發板。在飛凌公司購買開發板的時候,會隨開發板一起贈送的相關入門教程《飛凌開發板配套教程》並附有一張光碟,裡面有各種寫FL2440相關的開發資源。

    在正式進入程式開發之前,先對FL2440開發板及arm-linux系統進行熟悉。

    Fl2440開發板:熟悉Bootloader的使用方法、學會燒寫核心、燒寫檔案系統等等。

    Arm-linux系統:熟悉利用一些檔案系統和網路設定相關的命令。如果你對Linux命令已經有了一定了解,那麼arm-linux上的命令也基本一樣。

詳細操作過程請參考《飛凌開發板配套教程》一書

5.2開發控制檯程式

    主要開發流程圖如下:

image

    在早期的開發環境方式中,是先用文字編輯器編寫c或者cpp檔案,然後再直接在Linux機器上通過交叉編譯命令,編譯程式碼文字檔案並生成可執行程式,然後將可執行程式傳送到arm-linux板上,然後就可以在arm-linux機器上執行程式了。

    現在的開發模式和早期的開發模式一樣,只是在編寫程式碼的工具上進行了改進。早期編寫程式碼的工具只要是能編輯文字的軟體就可以,甚至在Linux中通過終端的vi命令就可以搞定,Linux機器的職能僅僅是編寫程式碼和編譯程式碼。現在則使用Eclipse CDT,可以在Linux機器上編寫C/C++程式碼並進行除錯,Linux機器基本上可以模擬arm-linux系統上除了一些硬體相關度高的應用程式(如驅動程式)之外的絕大部分其它程式的執行環境。

5.2.1使用Eclipse CDT編寫程式碼

    其實和用Eclipse CDT編寫Linux環境下的控制檯程式是完全一樣。除了在一些特別的場合,比如編寫驅動程式,需要注意差別外,其餘的功能的實現方法基本上一樣。

    這方面屬於程式設計的基本功,需要長期學習和積累,所以在此不再多述。

5.2.2建立交叉編譯環境

    雖然生成程式的原始碼是一樣的,但是在Linux機器上編譯生成的可執行檔案是不能在arm-linux系統上執行的,需要用arm-linux專用的編譯器進行編譯後,才能生成可在arm-linux系統上執行的可執行檔案,當然此時應用程式又顯然不能在Linux系統上運行了。

    將交叉編譯工具cross-2.95.3.tar.bz2(可以到網上下載,也可以到開發板附帶的光碟資源中找到)通過共享目錄傳送到Linux系統中,然後在Linux系統終端中先進入其檔案目錄,然後執行解壓命令:

tar xjvf cross-2.95.3.tar.bz2

    然後在/usr/local/arm檔案目錄下可以看到解壓後的2.95.3的庫了,或者如果你解壓的是cross-3.4.1.tar.bz2的版本,那麼將會在對應目錄下生成3.4.1的目錄。

clip_image060

    然後設定環境變數。因為Linux機器上存在不止一種編譯器,為了避免環境變數衝突,最好新建一個賬號,比如新建賬號arm-linux-gcc,然後在對應的賬號目錄中找到.bash_profile檔案,設定環境變數,編輯.bash_profile,在最後一行增加路徑(vi開啟文字檔案,按i表示insert修改文字檔案,然後Esc退出insert模式,再shift zz表示儲存退出檔案,詳細的命令介紹可以到網上查閱相關資料):

export PATH=/usr/local/arm/2.95.3/bin:$PATH

clip_image062

    可以通過echo $PATH來檢視環境變數是否設定成功:

clip_image064

5.2.3編譯並執行程式

    在編輯好了程式碼檔案並建立好了交叉編譯環境後,就開始編譯程式碼生成可執行程式,並移植到arm板上執行程式。

    在Linux系統的終端中通過輸入arm-linux-gcc/arm-linux-g++來編譯C/C++檔案。例如,我們對前面編寫的最簡單的CppHelloWorld.cpp檔案進行編譯:

arm-linux-g++ CppHelloWorld.cpp –o CppHello

clip_image066

    然後在對應目錄下會生成一個可在arm-linux系統上執行的應用程式CppHello。

    然後通過SSH服務和FTP服務,將可執行檔案從Linux檔案系統網路傳送到arm-linux檔案系統(在此用到了兩個小軟體SSH Secure和LeapFTP,在後面再對軟體的功能進行一下簡要介紹)。

clip_image068

    然後在Windows機器上遠端登入arm-linux系統開發板,並控制程式執行

clip_image070

    注意:需要先通過chmod +x CppHello來告訴系統此檔案是可執行檔案,然後再通過./CppHello來執行程式。

相關推薦

Linux開發LinuxArm-Linux程式開發筆記基礎入門

Linux及Arm-Linux程式開發筆記(零基礎入門篇)  目錄 一、Arm-Linux程式開發平臺簡要介紹... 3 1.1程式開發所需系統及開發語言... 3 1.2系統平臺搭建方式... 4 二、Linux開發平臺搭建... 5 2.1安裝虛擬工作站...

Linux開發OpenCV在ARM-linux上的移植過程遇到的問題4---共享庫中巢狀庫帶路徑已解決

【Linux開發】OpenCV在ARM-linux上的移植過程遇到的問題4—共享庫中巢狀庫帶路徑【已解決】 標籤:【Linux開發】 緊接著上一篇,我居然又嘗試了一下編譯opencv,主要是因為由於交叉編譯ARM-Linux,opencv,好像剛開始ma

帶你玩轉Linux命令列基礎入門

一、學習前準備 幫助文件 Tab 補全 Tab 補全是非常有用的一個功能,可以用來自動補全命令或檔名,省時準確。 未輸入狀態下連按兩次 Tab 列出所有可用命令 已輸入部分命令名或檔名,按 Tab 進行自動補全,多用你就肯定會喜歡的了。

總結整理json數據請求簡化版理解祺哥的成果

如果 body 是你 函數 har 合同 esp 避免 轉換 在同源js目錄下新建.txt文件 { "news":[ {"title":"審計管理","time":"2018-03-10 21:00"}, {"title":"菜單管理","time":

TP3.2TP3.2下實現ajax分頁原創+親測可用

條件 func edit syn model 多條 ade ges var 一,寫在最開始:ajax分頁的原理,是利用了js的ajax執行請求,獲取分頁list和分頁page 【代碼塊】,去替換頁面顯示數據的【代碼塊】 技術:js的ajax + TP3.2的fet

複雜網路複雜網路分析庫NetworkX學習筆記4:統計指標計算

無論是實際網路還是對模型網路進行分析,都離不開對網路拓撲統計指標的計算。反映網路結構與動力學特性的統計指標有很多,Costa等的Characterization of Complex Networks: A Survey of measurements一文對此有全面的綜述,本文僅介紹一些常用的統計指

AI無處不在2019北京人工智能科技展靜安莊館

專家 直播 圖像處理 研究 挑戰 智能機 人像 機器視覺 家電 【AI無處不在】2019北京人工智能科技展(靜安莊館) 人工智能是一門極富挑戰性的科學,從事這項工作的人必須懂得計算機知識,心理學和哲學。人工智能是包括十分廣泛的科學,它由不同的領域組成,如機器學習,計算機視

程式自學系列基礎學小程式---實現底部導航欄和頂部導航欄微信開發工具常用快捷鍵

基本實現功能 1,底部3個tab實現選中時文字和圖片改變 2,實現頁面資料的初始化和點選button時改變資料的簡單互動 3,實現日子的列印 先看效果圖 今天是我自學微信小程式的第一天,這些程式

讀書筆記SAP後勤模組實施攻略筆記樂立駿 著

買了這本書,那就看看吧~ 前言 SAP是開發商,SAP ERP是蓋好的毛坯房,房間之間有通道(模組之間介面),購買SAP的公司成為房東,買房以後找人(諮詢公司)裝修,此外SAP還提供了精裝樣板房(SAP行業最佳業務實踐),實施顧問就是裝修工人。 ERP和傳統財務軟體的區別:

自用java多執行緒程式設計學習筆記程式碼片段來源於網路

執行緒的基本概念 執行緒是在邏輯上等同於作業系統中說的程序,是程序的細分。比如我們使用同一個軟體同時對電腦進行體檢和防毒的時候,我們就是開啟了那個軟體的程序的兩個執行緒,在邏輯上這兩個執行緒是同時被cpu執行的。 執行緒的生命週期 執行緒的生命週期分為建立,就緒,執行,

Activiti研究關於Activiti變數範圍VariableScope的實現子類ExecutionEntity,TaskEntity

void org.activiti.engine.impl.persistence.entity.VariableScopeImpl//呼叫子類ExecutionEntity或taskEntity的loadVariableInstances載入本地變數ensureVariab

前端開發如何學習?後端?全棧?基礎入門

自由 基本 ops 站點 port firebase 應用 可靠 expr 這是一個2019年你成為前端,後端或全棧開發者的進階指南: 1、你不需要學習所有的技術成為一個web開發者 2、這個指南只是通過簡單分類列出了技術選項 3、我將從我的經驗和參考中給出建議 4、首選我

樹莓派crontab設置Linux設備定時重啟

ngs started not crontab fields through hour 其他 his 簡介:設置Linux設備定時重啟或者關機 問題:有臺設備每天總需要使用的人手動重啟一下才可以正常工作,但是檢查了日誌,看起來服務一切都正常。時間和正確時間相差4mins。

Linux深入epoll原始碼的函式呼叫流程分析

引入 我在上一篇博文中講了epoll原始碼的剖析,你是不是看的有點懵呢,反正我是有點,接下來我就以流程圖的形式梳理一下epoll原始碼的結構。 當然,這篇博文是建立在上一篇博文的基礎上,若你還沒看過

Linux解決tomcat出現Too many open files開啟的檔案過多問題

當用linux做高併發伺服器時,會遇到"Too many open files"的錯誤。Linux是有檔案控制代碼限制的(open files),而且Linux預設不是很高,一般都是1024,做高併發生產伺服器用其實很容易就達到這個數量。在linux中執行ulimit -a

嵌入式Linux之我行——PWM在ARM Linux中的原理和蜂鳴器驅動例項開發

嵌入式Linux之我行,主要講述和總結了本人在學習嵌入式linux中的每個步驟。一為總結經驗,二希望能給想入門嵌入式Linux的朋友提供方便。如有錯誤之處,謝請指正。 一、開發環境 主  機:VMWare--Fedora 9 開發板:Mini2440--64MB N

Linux下用CMAKEexvim進行STM32開發

最近有閒時,買了一個Jlink,老的Puppy聖誕版不支援,在http://www.minilinux.net/node/2583上下載了一個lina-1.1.iso 分享地址:http://pan.baidu.com/s/1dDwxZep,不到300M,可以開啟PAE,我

交叉編譯工具鏈-arm-linux-androideabi-gcc編譯方法

一、編譯器:      就是將“高階語言”翻譯為“機器語言(低階語言)”的程式。一個現代編譯器的主要工作流程:原始碼 (source code) → 前處理器 (preprocessor) → 編譯器 (compiler) → 彙編程式 (assembler) →

技術分享小乖乖的 Linux/Ubuntu 歷險記

本文將同步釋出於 [WHU-TD](https://www.cnblogs.com/WHU-TD/) 的部落格。 這是一篇自帶故事背景的部落格。 總所周知,寫的多,錯的多,更何況一個剛剛接觸 Linux 的小白。雖然只是介紹一些非常基礎的內容,還是希望大家在發現錯誤時可以及時指出。我一定會虛心地更正。

linux下編譯、連線執行時環境變數設定boost庫為例

以boost庫的存放目錄/usr/boost為例, 開啟/etc/profile, 追加以下內容(前兩行為編譯時路徑): export CPLUS_INCLUDE_PATH=/usr/boost/include:$CPLUS_INCLUDE_PATH export LIB