亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? c-wfc2.html

?? this about vxworks operations systems
?? HTML
?? 第 1 頁 / 共 2 頁
字號:
<dd><p class="Body"><a name="84481"> </a>Modules written in C++ must undergo an additional host processing step before being downloaded to a VxWorks target. This extra step (called <i class="term">munching</i>, by convention) initializes support for static objects and ensures that when the module is downloaded to VxWorks, the C++ run-time support is able to call the correct constructors and destructors in the correct order for all static objects.</p><dd><p class="Body"><a name="84511"> </a>The following commands will compile <b class="file">hello.cpp</b>, then munch<b class="file"> hello.o</b>, resulting in the munched file <b class="file">hello.out</b> suitable for loading by the Tornado module loader:</p><dl class="margin"><dd><pre class="Code2"><b><a name="85814">cc68k -I<i class="textVariable">installDir</i>/target/h -DCPU=MC68020 -nostdinc -fno-builtin \         -c hello.cpp nm68k hello.o | wtxtcl <i class="textVariable">installDir</i>/host/src/hutils/munch.tcl \         -asm 68k &gt; ctdt.c cc68k -c ctdt.c ld68k -r -o hello.out hello.o ctdt.o</a></b></pre></dl></dl></dl><dl class="margin"><dd><p class="table" callout><table border="0" cellpadding="0" cellspacing="0"><tr valign="top"><td valign="top" width="40"><br><img border="0" alt="*" src="icons/note.gif"></td><td><hr><div class="CalloutCell"><a name="85846"><b class="symbol_UC"><font face="Helvetica, sans-serif" size="-1" class="sans">NOTE:  </font></b></a>You can substitute the actual name of your <i class="textVariable">installDir</i> or use <b class="symbol_UC">$WIND_BASE</b> (UNIX) or <b class="symbol_UC">%WIND_BASE%</b> (Windows).</div></td></tr><tr valign="top"><td></td><td><hr></td></tr><tr valign="middle"><td colspan="20"></td></tr></table></p callout><dd><p class="table" callout><table border="0" cellpadding="0" cellspacing="0"><tr valign="top"><td valign="top" width="40"><br><img border="0" alt="*" src="icons/caution.gif"></td><td><hr><div class="CalloutCell"><a name="85116"><b class="symbol_UC"><font face="Helvetica, sans-serif" size="-1" class="sans">CAUTION:  </font></b></a>The <i class="title">GNU ToolKit User's Guide: Using ld </i>describes a <b class="command">-Ur</b> option for resolving references to C++ constructors. That option is for native development, not for cross-development. Do not use <b class="command">-Ur</b> with C++ modules for VxWorks.</div></td></tr><tr valign="top"><td></td><td><hr></td></tr><tr valign="middle"><td colspan="20"></td></tr></table></p callout></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H3"><i><a name="84526">5.2.6  &nbsp;&nbsp;Static Constructors and Destructors</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85852"> </a>After munching, downloading, and linking, the static constructors and destructors must be called.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85851">Calling Static Constructors and Destructors Interactively</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="84528"> </a>VxWorks provides two strategies for calling static constructors and destructors interactively:</p></dl><dl class="margin"><dd><div class="Item"><a name="84529"> </a><i class="term">automatic</i> </div><dl class="margin"><dd><div class="Indent"><a name="84530"> </a>Static <i class="emphasis">constructors</i> are called as a side effect of downloading. Static <i class="emphasis">destructors</i> are called as a side effect of unloading.</div><br></dl><dd><div class="Item"><a name="84531"> </a><i class="term">manual</i> </div><dl class="margin"><dd><div class="Indent"><a name="84532"> </a>Static constructors and destructors are called indirectly by invoking <b class="routine"><i class="routine">cplusCtors</i></b><b>(&nbsp;)</b> and <b class="routine"><i class="routine">cplusDtors</i></b><b>(&nbsp;)</b>.</div><br></dl></dl><dl class="margin"><dd><p class="Body"><a name="84534"> </a>Use <b class="routine"><i class="routine">cplusXtorSet</i></b><b>(&nbsp;)</b> to change the strategy; see its entry in the <b class="command">windsh</b> reference entry for details. To report on the current strategy, call <b class="routine"><i class="routine">cplusStratShow</i></b><b>(&nbsp;)</b>.</p><dd><p class="Body"><a name="85549"> </a>Under the automatic strategy, which is the default, static constructors are called immediately after a successful download. If the automatic strategy is set <i class="emphasis">before</i> a module is downloaded, that module's static constructors are called before the module loader returns to its caller. Under the automatic strategy, the module unloader calls a module's static destructors before actually unloading the module.</p><dd><p class="Body"><a name="84536"> </a>The manual strategy causes static constructors to be called as a result of invoking <b class="routine"><i class="routine">cplusCtors</i></b><b>(&nbsp;)</b>. Refer to the entries for <b class="routine"><i class="routine">cplusCtors</i></b><b>(&nbsp;)</b> and <b class="routine"><i class="routine">cplusDtors</i></b><b>(&nbsp;)</b> in the <b class="command">windsh</b> reference for more information. To invoke all currently-loaded static constructors or destructors, manual mode can be used with no argument. Manual mode can also be used to call static constructors and destructors explicitly on a module-by-module basis.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="84540">Constructors and Destructors in System Startup and Shutdown</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="84541"> </a>When you create bootable VxWorks applications, call static constructors during system initialization. Modify the <b class="routine"><i class="routine">usrRoot</i></b><b>(&nbsp;)</b> routine in <b class="file">usrConfig.c</b> to include a call to <b class="routine"><i class="routine">cplusCtorsLink</i></b><b>(&nbsp;)</b>. This calls all static constructors linked with your system.</p><dd><p class="Body"><a name="84544"> </a>To modify <b class="file">usrConfig.c</b> to call <b class="routine"><i class="routine">cplusCtorsLink</i></b><b>(&nbsp;)</b>, locate the C++ initialization sections:</p><dl class="margin"><dd><pre class="Code2"><b><a name="84545">#ifdef INCLUDE_CPLUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* C++ product */     cplusLibInit (); #endif  #ifdef INCLUDE_CPLUS_MIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* C++ product */     cplusLibMinInit (); #endif</a></b></pre></dl><dd><p class="Body"><a name="84546"> </a>Next, add <b class="routine"><i class="routine">cplusCtorsLink</i></b><b>(&nbsp;)</b> to one or both sections, depending on your system requirements. In the following example, <b class="routine"><i class="routine">cplusCtorsLink</i></b><b>(&nbsp;)</b> is called only when minimal C++ is configured:</p><dl class="margin"><dd><pre class="Code2"><b><a name="85125">#ifdef INCLUDE_CPLUS_MIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* C++ product */     cplusLibMinInit ();     cplusCtorsLink (); #endif</a></b></pre></dl></dl></dl><dl class="margin"><dd><p class="table" callout><table border="0" cellpadding="0" cellspacing="0"><tr valign="top"><td valign="top" width="40"><br><img border="0" alt="*" src="icons/caution.gif"></td><td><hr><div class="CalloutCell"><a name="85130"><b class="symbol_UC"><font face="Helvetica, sans-serif" size="-1" class="sans">CAUTION:  </font></b></a>Static objects are not initialized until the call to <b class="routine"><i class="routine">cplusCtorsLink</i></b><b>(&nbsp;)</b>. Thus, if your application uses static objects in <b class="routine"><i class="routine">usrRoot</i></b><b>(&nbsp;)</b>, call <b class="routine"><i class="routine">cplusCtorsLink</i></b><b>(&nbsp;)</b> before using them. <br> <br>For <b class="routine"><i class="routine">cplusCtorsLink</i></b><b>(&nbsp;)</b> to work correctly, you must perform the munch operation on the fully-linked VxWorks image rather than on individual modules.</div></td></tr><tr valign="top"><td></td><td><hr></td></tr><tr valign="middle"><td colspan="20"></td></tr></table></p callout><dl class="margin"><dd><p class="Body"><a name="85137"> </a>A corresponding routine, <b class="routine"><i class="routine">cplusDtorsLink</i></b><b>(&nbsp;)</b>, is provided to call all static destructors. This routine is useful in systems that have orderly shutdown procedures. Include a call to <b class="routine"><i class="routine">cplusDtorsLink</i></b><b>(&nbsp;)</b> at the point in your code where it is appropriate to call all static destructors that were initially linked with your system.</p><dd><p class="Body"><a name="84560"> </a>The <b class="routine"><i class="routine">cplusCtorsLink</i></b><b>(&nbsp;)</b> and <b class="routine"><i class="routine">cplusDtorsLink</i></b><b>(&nbsp;)</b> routines do not call static constructors and destructors for modules that are downloaded after system initialization. If your system uses the module downloader, follow the procedures described in <a href="c-wfc2.html#85851"><i class="title">Calling Static Constructors and Destructors Interactively</i></a>.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H3"><i><a name="84565">5.2.7  &nbsp;&nbsp;Template Instantiation</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="84567"> </a>Our C++ toolchain supports three distinct template instantiation strategies. The simplest (and the one that is used by default in VxWorks makefiles) is <i class="term">implicit instantiation</i>. In this case code for each template gets emitted in every module that needs it. For this to work the body of a template must be available in each module that uses it. Typically this is done by including template function bodies along with their declarations in a header file. The disadvantage of implicit instantiation is that it may lead to code duplication and larger application size. </p><dd><p class="Body"><a name="84568"> </a>The second approach is to explicitly instantiate any templates you require using the syntax found in <a href="c-wfc2.html#84593">Example&nbsp;5-1</a>. In this case you should compile with <b class="command">-fno-implicit-templates</b>. This scheme allows you the most control over where templates get instantiated and avoids code bloat.</p></dl></dl><dl class="margin"><dd><font face="Helvetica, sans-serif" size="-1" class="sans"><h5 class="HU"><i><a name="84572">-frepo</a></i></h5></font><dl class="margin"><dd><p class="Body"><a name="84573"> </a>This approach combines the simplicity of implicit instantiation with the smaller footprint obtained by instantiating templates by hand. It works by manipulating a database of template instances for each module.</p><dd><p class="Body"><a name="84583"> </a>The compiler will generate files with the extension <b class="file">.rpo</b>; these files list all the template instantiations used in the corresponding object files which could be instantiated there. The link wrapper <b class="symbol_lc">collect2</b> then updates the <b class="file">.rpo </b>files to tell the compiler where to place those instantiations and rebuilds any affected object files. The link-time overhead is negligible after the first pass, as the compiler continues to place the instantiations in the same files.</p></dl><dd><font face="Helvetica, sans-serif" size="-1" class="sans"><h5 class="HU"><i><a name="84584">Procedure</a></i></h5></font><dl class="margin"><dd><p class="Body"><a name="84585"> </a>The header file for a template must contain the template body. If template bodies are currently stored in <b class="file">.cpp</b> files, the line <b class="command">#include</b> <i class="textVariable">theTemplate</i><b class="file">.cpp</b> must be added to <i class="textVariable">theTemplate</i><b class="file">.h</b>. </p><dd><p class="Body"><a name="84586"> </a>A full build with the <b class="command">-frepo</b> option is required to create the <b class="file">.rpo</b> files that tell the compiler which templates to instantiate. The link step should be driven from <b class="command">cc</b><i class="textVariable">arch</i> rather than <b class="command">ld</b><i class="textVariable">arch</i>. </p><dd><p class="Body"><a name="84587"> </a>Subsequently individual modules can be compiled as usual (but with the <b class="command">-frepo</b> option and no other template flags). </p><dd><p class="Body"><a name="84588"> </a>When a new template instance is required the relevant part of the project must be rebuilt to update the <b class="file">.rpo</b> files. </p></dl><dd><font face="Helvetica, sans-serif" size="-1" class="sans"><h5 class="HU"><i><a name="84589">Loading Order</a></i></h5></font><dl class="margin"><dd><p class="Body"><a name="84590"> </a>The Tornado tools' dynamic linking ability requires that the module containing a symbol definition be downloaded before a module that references it. For instance, in the example below you should download <b class="file">PairA.o</b> before downloading <b class="file">PairB.o</b>. (You could also prelink them and download the linked object). </p></dl><dd><font face="Helvetica, sans-serif" size="-1" class="sans"><h5 class="HU"><i><a name="84591">Example</a></i></h5></font><dl class="margin"><dd><p class="Body"><a name="84592"> </a>This example uses a standard VxWorks BSP makefile (for concreteness, we assume a 68K target). </p></dl></dl><h4 class="EntityTitle"><a name="84593"><font face="Helvetica, sans-serif" size="-1" class="sans">Example 5-1:&nbsp;&nbsp;Sample Makefile</font></a></h4><dl class="margin"><dl class="margin"><dd><pre class="Code"><b><a name="84594">make PairA.o PairB.o ADDED_C++FLAGS=-frepo   /* dummy link step to instantiate templates */ cc68k -r -o Pair PairA.o PairB.o  /* In this case the template Pair&lt;int&gt;::Sum(void)  &nbsp;* will be instantiated in PairA.o.  &nbsp;*/  //Pair.h  template &lt;class T&gt; class Pair { public:     Pair (T _x, T _y);     T Sum ();  protected:     T x, y; };  template &lt;class T&gt; Pair&lt;T&gt;::Pair (T _x, T _y) : x (_x), y(_y) { }  template &lt;class T&gt; T Pair&lt;T&gt;::Sum () {     return x + y; }  // PairA.cpp #include "Pair.h"  int Add (int x, int y) {     Pair &lt;int&gt; Two (x, y);     return Two.Sum (); }  // PairB.cpp #include "Pair.h"  int Double (int x) { Pair &lt;int&gt; Two (x, x); return Two.Sum (); } </a></b></pre></dl></dl><a name="foot"><hr></a><p class="navbar" align="right"><a href="index.html"><img border="0" alt="[Contents]" src="icons/contents.gif"></a><a href="GuideIX.html"><img border="0" alt="[Index]" src="icons/index.gif"></a><a href="c-wfc.html"><img border="0" alt="[Top]" src="icons/top.gif"></a><a href="c-wfc1.html"><img border="0" alt="[Prev]" src="icons/prev.gif"></a><a href="c-wfc3.html"><img border="0" alt="[Next]" src="icons/next.gif"></a></p></body></html><!---by WRS Documentation (), Wind River Systems, Inc.    conversion tool:  Quadralay WebWorks Publisher 4.0.11    template:         CSS Template, Jan 1998 - Jefro --->

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区不卡视频| 偷拍日韩校园综合在线| 国产亚洲精品aa午夜观看| 欧美大片在线观看一区二区| 欧美一区二区三区影视| 欧美日韩精品二区第二页| 在线亚洲人成电影网站色www| 丰满岳乱妇一区二区三区 | 成人小视频在线| 国产黄色成人av| 成人中文字幕电影| 成人h精品动漫一区二区三区| www.欧美日韩| 97久久精品人人澡人人爽| 91首页免费视频| 欧美日韩国产在线播放网站| 在线电影院国产精品| 91精品国产综合久久久久久漫画 | 亚洲美女在线国产| 一区二区在线观看免费| 亚洲综合色区另类av| 亚洲一区在线观看免费| 午夜精品国产更新| 日韩电影在线看| 国产一区二区三区久久悠悠色av| 国产精品69毛片高清亚洲| 成人午夜电影久久影院| 成人av电影观看| 在线观看国产日韩| 欧美日本一道本在线视频| 日韩欧美的一区二区| 精品久久国产老人久久综合| 欧美激情在线看| 亚洲午夜激情av| 久久99久久精品| 不卡的av网站| 欧美男男青年gay1069videost| 日韩美一区二区三区| 国产日韩欧美一区二区三区综合| 中文字幕一区二区三区乱码在线| 亚洲一区二区三区四区在线观看 | 亚洲三级免费电影| 亚洲二区视频在线| 国产主播一区二区三区| 不卡在线视频中文字幕| 欧美久久久久久蜜桃| 久久精品一区八戒影视| 一区二区不卡在线播放| 久久草av在线| 91国产成人在线| 久久综合久久99| 亚洲国产一区二区a毛片| 国产在线看一区| 在线免费观看日韩欧美| 欧美精品一区二区不卡| 亚洲人成伊人成综合网小说| 日本怡春院一区二区| 97久久超碰国产精品电影| 欧美一卡在线观看| 综合久久国产九一剧情麻豆| 久久99久久精品| 在线免费观看一区| 中文字幕+乱码+中文字幕一区| 日韩在线一区二区三区| 色综合网站在线| 国产欧美日韩久久| 蜜桃一区二区三区在线| 色婷婷av一区二区三区软件| 国产欧美日韩在线观看| 麻豆国产欧美一区二区三区| 欧洲亚洲精品在线| 国产精品高潮久久久久无| 久久99精品国产.久久久久| 欧美在线视频日韩| 国产精品网站在线| 久久不见久久见中文字幕免费| 欧美日韩小视频| 有码一区二区三区| 99久久伊人久久99| 久久毛片高清国产| 久久精品国产亚洲5555| 欧美在线短视频| 中文字幕一区视频| 国产风韵犹存在线视精品| 欧美久久一二区| 亚洲午夜国产一区99re久久| av不卡在线观看| 国产日韩亚洲欧美综合| 久久精品国内一区二区三区| 欧美日韩一级片网站| ㊣最新国产の精品bt伙计久久| 久久精品国产精品亚洲精品| 欧美性生交片4| 一级女性全黄久久生活片免费| 国产凹凸在线观看一区二区| 欧美不卡123| 美女在线一区二区| 日韩一区二区三区视频| 日韩不卡一区二区三区| 欧美日韩国产电影| 五月激情综合网| 欧美亚洲高清一区二区三区不卡| 最新不卡av在线| 色综合天天综合狠狠| 国产精品短视频| 成a人片国产精品| 综合在线观看色| 一本大道久久精品懂色aⅴ| 自拍av一区二区三区| 96av麻豆蜜桃一区二区| 中文字幕在线一区二区三区| 成人动漫在线一区| 亚洲色图欧洲色图| 在线观看区一区二| 亚洲观看高清完整版在线观看| 欧美三级一区二区| 午夜欧美一区二区三区在线播放| 欧美三片在线视频观看| 青青青爽久久午夜综合久久午夜 | 天堂成人国产精品一区| 欧美日韩国产a| 精品一区二区在线看| 久久久高清一区二区三区| 国产aⅴ综合色| 最新日韩在线视频| 欧美日韩中文字幕一区二区| 丝袜美腿一区二区三区| 欧美成人aa大片| 国产精品中文字幕日韩精品| 国产日韩欧美不卡| 91麻豆高清视频| 丝袜美腿亚洲一区| 26uuu精品一区二区在线观看| 极品瑜伽女神91| 国产亚洲精品资源在线26u| 成人影视亚洲图片在线| 亚洲品质自拍视频网站| 91美女福利视频| 日本强好片久久久久久aaa| 久久精品亚洲精品国产欧美| www.成人网.com| 天堂蜜桃一区二区三区| 国产欧美一区二区精品性色 | 91成人国产精品| 伦理电影国产精品| 国产精品久久久久一区| 欧美在线看片a免费观看| 麻豆免费精品视频| 国产农村妇女毛片精品久久麻豆| 91视频精品在这里| 日本sm残虐另类| 日韩美女久久久| 精品国产一区二区精华| 91免费视频观看| 午夜成人免费电影| 欧美激情一区在线观看| 欧美男同性恋视频网站| 成人蜜臀av电影| 婷婷亚洲久悠悠色悠在线播放 | 国产资源在线一区| 亚洲精品五月天| 久久免费视频一区| 欧美日韩一区二区三区不卡| 极品少妇一区二区| 亚洲一区在线视频观看| 久久精品夜色噜噜亚洲a∨| 欧美亚一区二区| 成人免费观看男女羞羞视频| 日本怡春院一区二区| 亚洲精品你懂的| 国产精品―色哟哟| 日韩视频免费直播| 欧美性生交片4| 99久久久国产精品免费蜜臀| 精品一区二区综合| 图片区小说区国产精品视频| 中文字幕日韩av资源站| 精品日韩欧美在线| 在线播放亚洲一区| 欧美亚洲国产一区二区三区va| 成人精品小蝌蚪| 国产剧情在线观看一区二区| 日韩在线播放一区二区| 亚洲免费色视频| 亚洲国产成人一区二区三区| 精品国产sm最大网站免费看| 欧美高清精品3d| 欧美性三三影院| 色婷婷综合久久久久中文| 成人黄色av电影| 国产激情精品久久久第一区二区| 日本特黄久久久高潮| 亚洲一区二区三区中文字幕 | 久久精品免费看| 日本伊人色综合网| 亚洲高清视频的网址| 一区二区在线观看免费视频播放| 国产精品久久久久久亚洲毛片| 久久久久久**毛片大全| 久久久久亚洲综合|