導航:首頁 > 源碼編譯 > hisi100編譯poco庫

hisi100編譯poco庫

發布時間:2022-08-28 03:51:45

1. 怎麼在mingw環境下編譯安裝poco庫

.vs編譯安裝的話,直接運行那些bat腳本就可以了,但MinGW肯定不行,所以需要用到MSYS
2.解壓poco-1.4.6p2,比如:D:/mysdk/poco-1.4.6p2,在MSYS的命令行中輸入「cd
/d/mysdk/poco-1.4.6p2」回車,就到了poco-1.4.6p2的解壓目錄了,具體你解壓的目錄路徑可以根據實際情況修改;

3.configure poco-1.4.6p2

linux裡面要配置編譯參數,我們可以通過「./configure
--help」查看有哪些編譯項。我們要使用MinGW編譯poco就必須在configure時指明是MinGW,我的configure命令如下(大家根據自己的實際情況修改):

./configure --config=MinGW --shared --static --no-test --no-samples
--omit=Crypto,NetSSL_OpenSSL,Data/ODBC,Data/MySQL

簡單解釋:--config=MinGW表示我採用MinGW編譯poco,--shared
--static表示編譯生成動態庫(dll)和靜態庫(a),omit=...表示編譯時不生成這些庫,因為我本機沒裝ssl、mysql,odbc需要lib,會影響我編譯,所以我去掉了這4個庫;

4.修改MinGW的編譯腳本

修改poco-1.4.6p2/bulid/config/MinGW,把「SYSLIBS = -L/usr/local/lib -L/usr/lib
-liphlpapi -lws2_32 -lssl -lcrypto -lws2_32 -lgdi32」里去掉「-lssl
-lcrypto」,因為我本機沒裝ssl,這個庫沒有,會影響編譯安裝;

5.make編譯

執行了上面的./configure
--config=......的命令後會生成一個config.make文件,然後輸入「make」並回車,就開始編譯安裝poco了,poco編譯過程會有一些提示錯誤,例如「poco-1.4.6p2/.../xxx.exe.exe:No
such file」,如果是的話就不用管他,繼續輸入make回車,他會繼續往下編譯,大概經過N次這樣的操作後,提示「make[1]:Nothing to be
done for 'all'.」的時候就編譯完了。

編譯完成後,在poco-1.4.6p2/lib/MinGW/ia32/目錄下就是編譯出來的靜態度和動態庫了。

2. 現代C/C++編譯器有多智能

最近在搞C/C++代碼的性能優化,發現很多時候自以為的優化其實編譯器早就優化過了,得結合反匯編才能看出到底要做什麼樣的優化。
請熟悉編譯器的同學結合操作系統和硬體談一談現代c/c++編譯器到底有多智能吧。哪些書本上的優化方法其實早就過時了?
以及程序員做什麼會讓編譯器能更好的自動優化代碼?
舉個栗子:
1,循環展開,大部分編譯器設置flag後會自動展開;
2,順序SIMD優化,大部分編譯器設置flag後也會自動優化成SIMD指令;
3,減少中間變數,大部分編譯器會自動優化掉中間變數;
etc.
查看代碼對應的匯編:
Compiler Explorer
【以下解答】
舉個之前看過的例子:
int calc_hash(signed char *s){ static const int N = 100003; int ret = 1; while (*s) { ret = ret * 131 + *s; ++ s; } ret %= N; if (ret < 0) ret += N; //注意這句 return ret;}
【以下解答】
舉個簡單例子,一到一百求和
#include int sum() { int ret= 0; int i; for(i = 1; i <= 100; i++) ret+=i; return ret;}int main() { printf("%d\n", sum()); return 0;}
【以下解答】
話題太大,碼字花時間…
先放傳送門好了。
請看Google的C++編譯器組老大Chandler Carruth的演講。這個演講是從編譯器研發工程師的角度出發,以Clang/LLVM編譯C++為例,向一般C++程序員介紹理解編譯器優化的思維模型。它講解了C++編譯器會做的一些常見優化,而不會深入到LLVM具體是如何實現這些優化的,所以即使不懂編譯原理的C++程序員看這個演講也不會有壓力。
Understanding Compiler Optimization - Chandler Carruth - Opening Keynote Meeting C++ 2015
演示稿:https://meetingcpp.com/tl_files/mcpp/2015/talks/meetingcxx_2015-understanding_compiler_optimization_themed_.pdf
錄像:https://www.youtube.com/watch?v=FnGCDLhaxKU(打不開請自備工具…)
Agner Fog寫的優化手冊也永遠是值得參考的文檔。其中的C++優化手冊:
Optimizing software in C++ - An optimization guide for Windows, Linux and Mac platforms - Agner Fog
要稍微深入一點的話,GCC和LLVM的文檔其實都對各自的內部實現有不錯的介紹。
GCC:GNU Compiler Collection (GCC) Internals
LLVM:LLVM』s Analysis and Transform Passes
========================================
反模式(anti-patterns)
1. 為了「優化」而減少源碼中局部變數的個數
這可能是最沒用的手工「優化」了。特別是遇到在高級語言中「不用臨時變數來交換兩個變數」這種場景的時候。
看另一個問題有感:有什麼像a=a+b;b=a-b;a=a-b;這樣的演算法或者知識? - 編程
2. 為了「優化」而把應該傳值的參數改為傳引用
(待續…)
【以下解答】
推薦讀一讀這里的幾個文檔:
Software optimization resources. C++ and assembly. Windows, Linux, BSD, Mac OS X
其中第一篇:http://www.agner.org/optimize/optimizing_cpp.pdf
講解了C++不同領域的優化思路和問題,還有編譯器做了哪些優化,以及如何代碼配合編譯器優化。還有優化多線程、使用向量指令等的介紹,推薦看看。
感覺比較符合你的部分需求。
【以下解答】
一份比較老的slides:
http://www.fefe.de/source-code-optimization.pdf
【以下解答】
利用C++11的range-based for loop語法可以實現類似python里的range生成器,也就是實現一個range對象,使得
for(auto i : range(start, stop, step))
【以下解答】
我覺得都不用現代。。。。寄存器分配和指令調度最智能了
【以下解答】
每次編譯poco庫的時候我都覺得很為難GCC
【以下解答】
有些智能並不能保證代碼變換前後語義是等價的
【以下解答】
誒誒,我錯了各位,GCC是可以藉助 SSE 的 xmm 寄存器進行優化的,經 @RednaxelaFX 才知道應該添加 -march=native 選項。我以前不了解 -march 選項,去研究下再來補充為什麼加和不加區別這么大。
十分抱歉黑錯了。。。以後再找別的點來黑。
誤導大家了,實在抱歉。(??ˇ?ˇ??)
/*********以下是並不正確的原答案*********/
我是來黑 GCC的。
最近在搞編譯器相關的活,編譯OpenSSL的時候有一段這樣的代碼:
BN_ULONG a0,a1,a2,a3; // EmmetZC 註:BN_ULONG 其實就是 unsigned longa0=B[0]; a1=B[1]; a2=B[2]; a3=B[3];A[0]=a0; A[1]=a1; A[2]=a2; A[3]=a3;
【以下解答】
提示:找不到對象
【以下解答】
忍不住抖個機靈。
私以為正常寫代碼情況下編譯器就能優化,才叫智能編譯器。要程序員絞盡腦汁去考慮怎麼寫代碼能讓編譯器更好優化,甚至降低了可讀性,那就沒有起到透明屏蔽的作用。
智能編譯器應該是程序猿要較勁腦汁才能讓編譯器不優化。
理論上是這樣的。折疊我吧。
【以下解答】
編譯器智能到每次我都覺得自己很智障。
【以下解答】
雖然題主內容里是想問編譯器代碼性能優化方面的內容,但題目里既然說到編譯器的的智能,我就偏一下方向來說吧。
有什麼更能展示編譯器的強大和智能?
自然是c++的模版元編程
template meta programming
簡單解釋的話就是寫代碼的代碼,寫的還是c++,但能讓編譯器在編譯期間生成正常的c++代碼。
沒接觸過的話,是不是聽上去感覺就是宏替換的加強版?感覺不到它的強大呢?
只是簡單用的話,效果上這樣理解也沒什麼
但是一旦深入下去,尤其翻看大神寫的東西,這明明看著就是c++的代碼,但TM怎麼完全看不懂他在干什麼?後來才知道這其實完全是另外一個世界,可是明明是另外一個世界的東西但它又可以用來做很多正常c++能做的事....
什麼?你說它好像不能做這個,不能做那個,好像做不了太多東西,錯了,大錯特錯。就像你和高手考試都考了100分的故事一樣,雖然分數一樣,但你是努力努力再努力才得了滿分,而高手只是因為卷面分只有100分.....在元編程面前,只有想不到,沒有做不到。
再回頭看看其他答案,編譯器順手幫你求個和,丟棄下無用代碼,就已經被驚呼強大了,那模板元編程這種幾乎能在編譯期直接幫你「生成」包含復雜邏輯的c++代碼,甚至還能間接「執行」一些復雜邏輯,這樣的編譯器是不是算怪獸級的強大?
一個編譯器同時支持編譯語法相似但結果不同卻又關聯的兩種依賴語言,這個編譯器有多強大多智能?
寫的人思維都要轉換幾次,編譯器轉著圈嵌著套翻著番兒地編譯代碼的代碼也肯定是無比蛋疼的,你說它有多強大多智能?
一個代碼創造另外一個代碼,自己能按照相似的規則生成自己,是不是聽上去已經有人工智慧的發展趨勢了?
上帝說,要有光,於是有了光。
老子曰,一生二,二生三,三生萬物。
信c++,得永生!
===
FBI WARNING:模板元編程雖然很強大,但也有不少缺點,尤其對於大型項目,為了你以及身邊同事的身心健康,請務必適度且謹慎的使用。勿亂入坑,回頭是岸。
【以下解答】
c++11的auto自動類型推斷算么....
【以下解答】
智能到開不同級別的優化,程序行為會不同 2333
【以下解答】
這個取決於你的水平

3. arm-hisiv100nptl-linux-gcc和arm-hisiv300nptl-linux-gcc有什麼區別

都是arm-linux交叉編譯工具,版本不同而已(解壓目錄可能有點區別)。 這2套編譯工具都比較新,使用上一般都能滿足要求,具體還要參考你要編譯的源代碼對編譯器的版本要求(README、Changelog等)。

4. codeblocks中怎麼用第三方庫,比如ACE,ICE,POCO,QT等

我是這么做的,可還是不行。在新建工程,設置好lib和h的搜索路徑後,我最先選用gnu的gcc作為編譯器,它居然說不能識別h文件中定義的類(但是它能找到h文件),於是編譯不過。

而後我選擇了vs作為cb編譯器,如法炮製,編譯通過了,但是出了一個外部連接錯誤。但只要是在VS IDE中作這些事就能行。

5. 怎麼在mingw環境下編譯安裝poco庫

1.vs編譯安裝的話,直接運行那些bat腳本就可以了,但MinGW肯定不行,所以需要用到MSYS
2.解壓poco-1.4.6p2,比如:D:/mysdk/poco-1.4.6p2,在MSYS的命令行中輸入「cd
/d/mysdk/poco-1.4.6p2」回車,就到了poco-1.4.6p2的解壓目錄了,具體你解壓的目錄路徑可以根據實際情況修改;

3.configure poco-1.4.6p2

linux裡面要配置編譯參數,我們可以通過「./configure
--help」查看有哪些編譯項。我們要使用MinGW編譯poco就必須在configure時指明是MinGW,我的configure命令如下(大家根據自己的實際情況修改):

./configure --config=MinGW --shared --static --no-test --no-samples
--omit=Crypto,NetSSL_OpenSSL,Data/ODBC,Data/MySQL

簡單解釋:--config=MinGW表示我採用MinGW編譯poco,--shared
--static表示編譯生成動態庫(dll)和靜態庫(a),omit=...表示編譯時不生成這些庫,因為我本機沒裝ssl、mysql,odbc需要lib,會影響我編譯,所以我去掉了這4個庫;

4.修改MinGW的編譯腳本

修改poco-1.4.6p2/bulid/config/MinGW,把「SYSLIBS = -L/usr/local/lib -L/usr/lib
-liphlpapi -lws2_32 -lssl -lcrypto -lws2_32 -lgdi32」里去掉「-lssl
-lcrypto」,因為我本機沒裝ssl,這個庫沒有,會影響編譯安裝;

5.make編譯

執行了上面的./configure
--config=......的命令後會生成一個config.make文件,然後輸入「make」並回車,就開始編譯安裝poco了,poco編譯過程會有一些提示錯誤,例如「poco-1.4.6p2/.../xxx.exe.exe:No
such file」,如果是的話就不用管他,繼續輸入make回車,他會繼續往下編譯,大概經過N次這樣的操作後,提示「make[1]:Nothing to be
done for 'all'.」的時候就編譯完了。

編譯完成後,在poco-1.4.6p2/lib/MinGW/ia32/目錄下就是編譯出來的靜態度和動態庫了。

6. vs2010怎麼安裝poco庫

安裝步驟:
1. 下載源碼包。在POCO的官方網站下載最新的POCO源碼包。http://pocoproject.org/download/index.html
2.解壓源碼包。下載的文件名是「poco-1.4.2.zip」,將其解壓在F:\POCO目錄下。
3.編譯庫文件。開始菜單–Microsoft Visual Studio 2010–Visual Studio Tools—Open Visual Studio 2010 Command Prompt 打開命令行窗口。cd命令進入poco根目錄,F:\POCO\poco-1.4.2。輸入命令:buildwin 100 回車。
4.等待編譯完成,花費了一個多小時。
5.設置環境變數。POCO_HOME F:\POCO\poco-1.4.2
6.添加Include目錄。打開工程屬性頁,在「Configuration Properties -> C/C++ -> General -> Additional Include Directories」欄目中添加「$(POCO_HOME)\Foundation\include」,確認並應用該設置。
7.添加lib鏈接庫。打開屬性頁,在「Configuration Properties -> Linker -> General -> Additional Library Directories」欄目中添加lib目錄路徑$(POCO_HOME)\lib。在「Configuration Properties -> Linker -> Input -> Additional Dependencies」中添加應用程序需要用到的lib文件。
8.更改輸出路徑,以便項目生成的應用程序能夠調用DLL文件。打開工程屬性,將「Configuration Properties -> General -> Output Directory」改為「$(POCO_HOME)\bin」;將「Configuration Properties -> Debugging -> Working Directory」改為「$(OutDir)」。
9.設置完成後,重啟Visual Studio。

7. POCO怎麼使用

下載軟體,注冊後輸入帳號登陸,可以通過搜索、查找,再下載、也可以聊天等等。

8. 如何編譯POCO

按需求修改完buildwin.cmd文件後,使用vs2010的Tools中「Visual Studio x64 Win64 命令提示(2010)」命令,進入命令行狀態。轉到Poco所在的根目錄,直接輸入命令:
buildwin 100 build all both x64 samples
最後需要注意的地方:
上述方法完成編譯後,關於Data的MySQL、ODBC、SQLite三個庫沒有生成(原因不詳),需要單獨編譯,在此以MySQL為例記錄一下編譯過程。在\Data\MySQL文件夾下,找到MySQL_vs100.sln文件,打開。
打開的工程是win32的,需要改為X64。在C++包含目錄中添加本項目的include文件夾,例如:「C:\poco-1.5.1-all\Data\MySQL\include;」,還要添加安裝的MySQL的include文件夾,例如「C:\Program Files\MySQL\MySQL Server 5.6\include」,在庫目錄中添加所需庫的路徑,例如「C:\Program Files\MySQL\MySQL Server 5.6\lib」。
注意:編譯MySQL的Poco庫,必須先安裝MySQL。
設置好環境之後,就可以選擇相應的配置(debug or release)進行編譯。
編譯完成後,生成的庫在Poco根目錄下的lib文件夾,如果是編譯的動態庫,則動態庫在Poco根目錄下的bin文件夾。

閱讀全文

與hisi100編譯poco庫相關的資料

熱點內容
拉伸訓練pdf 瀏覽:92
如何撥號到中央伺服器 瀏覽:648
中國天才少年程序員 瀏覽:352
編程思想pdf 瀏覽:282
加密歐美航線 瀏覽:48
svn怎麼看伺服器的地址 瀏覽:187
騎馬與砍殺1命令部隊用盾牌 瀏覽:595
光纜pdf 瀏覽:350
加密流量實時監測 瀏覽:628
360壓縮和好壓哪個好 瀏覽:61
python判斷變數是否為list 瀏覽:906
雲伺服器1m帶寬表示什麼意思 瀏覽:702
429升冷櫃用多大壓縮機 瀏覽:116
決策樹演算法java實現 瀏覽:376
androidtv開發焦點控制 瀏覽:328
論人的成長pdf 瀏覽:282
python網站源代碼 瀏覽:827
手機文件壓縮器怎麼安裝 瀏覽:112
androidsdk封裝 瀏覽:266
微信加密不知道怎麼取消 瀏覽:705