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

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

?? build.make.html

?? ecos 文檔
?? HTML
?? 第 1 頁 / 共 4 頁
字號:
delete them.</P
></LI
></OL
><DIV
CLASS="NOTE"
><BLOCKQUOTE
CLASS="NOTE"
><P
><B
>Note: </B
>At present there is no defined support in the build system for
defining custom build steps that generate exported header files. Any
attempt to use the existing custom build step support may fall foul of
unexpected header files being deleted automatically by the build
system. This limitation will be addressed in a future release of the
component framework, and may require changing the priority for
exporting header files so that a custom build step can happen first.</P
></BLOCKQUOTE
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="BUILD.MAKE.COMPILES">Compiling</H2
><P
>Once there are up to date copies of all the exported header files in
the build tree, the main build can proceed. Most of this involves
compiling source files listed in <SPAN
CLASS="PROPERTY"
>compile</SPAN
> properties in the <SPAN
CLASS="APPLICATION"
>CDL</SPAN
>
scripts for the various packages, for example:</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>cdl_package CYGPKG_ERROR {
    display       "Common error code support"
    compile       strerror.cxx
    &#8230;
}</PRE
></TD
></TR
></TABLE
><P
><SPAN
CLASS="PROPERTY"
>compile</SPAN
> properties may appear in the body of a <TT
CLASS="LITERAL"
>cdl_package</TT
>,
<TT
CLASS="LITERAL"
>cdl_component</TT
>, <TT
CLASS="LITERAL"
>cdl_option</TT
> or <TT
CLASS="LITERAL"
>cdl_interface</TT
>. If the option or
other <SPAN
CLASS="APPLICATION"
>CDL</SPAN
> entity is active and enabled, the property takes effect.
If the option is inactive or disabled the property is ignored. It is
possible for a <SPAN
CLASS="PROPERTY"
>compile</SPAN
> property to list multiple source files, and
it is also possible for a given <SPAN
CLASS="APPLICATION"
>CDL</SPAN
> entity to contain multiple
<SPAN
CLASS="PROPERTY"
>compile</SPAN
> properties. The following three examples are equivalent:</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>cdl_option &lt;some_option&gt; {
    &#8230;
    compile file1.c file2.c file3.c
}

cdl_option &lt;some_option&gt; {
    &#8230;
    compile file1.c
    compile file2.c
    compile file3.c
}

cdl_option &lt;some_option&gt; {
    &#8230;
    compile file1.c file2.c
    compile file3.c
}</PRE
></TD
></TR
></TABLE
><P
>Packages that follow the directory layout conventions should have a
subdirectory <TT
CLASS="FILENAME"
>src</TT
>, and the
component framework will first look for the specified files there.
Failing that it will look for the specified files relative to the
package's root directory. For example if a package contains a source
file <TT
CLASS="FILENAME"
>strerror.cxx</TT
> then the following two lines
are equivalent:</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>    compile strerror.cxx
    compile src/strerror.cxx</PRE
></TD
></TR
></TABLE
><P
>In the first case the component framework will find the file
immediately in the packages <TT
CLASS="FILENAME"
>src</TT
>
subdirectory. In the second case the framework will first look for a
file <TT
CLASS="FILENAME"
>src/src/strerror.cxx</TT
>, and then for
<TT
CLASS="FILENAME"
>str/strerror.cxx</TT
> relative to the package's root
directory. The result is the same.</P
><P
>The file names may be relative paths, allowing the source code to be
split over multiple directories. For example if a package contains a
file <TT
CLASS="FILENAME"
>src/sync/mutex.cxx</TT
> then the corresponding
<SPAN
CLASS="APPLICATION"
>CDL</SPAN
> entry would be:</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>    compile sync/mutex.cxx</PRE
></TD
></TR
></TABLE
><P
>All the source files relevant to the current configuration will be
identified when the build tree is generated or updated, and added to
the appropriate makefile (or its equivalent for other build systems).
The actual build will involve a rule of the form:</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>&lt;object file&gt; : &lt;source file&gt;
        $(CC) -c $(INCLUDE_PATH) $(CFLAGS) -o $@ $&#60;</PRE
></TD
></TR
></TABLE
><P
>The component framework has built-in knowledge for processing source
files written in C, C++ or assembler. These should have a
<TT
CLASS="LITERAL"
>.c</TT
>, <TT
CLASS="LITERAL"
>.cxx</TT
> and
<TT
CLASS="LITERAL"
>.S</TT
> suffix respectively. The current implementation
has no simple mechanism for extending this with support for other
languages or for alternative suffixes, but this should be addressed in
a future release.</P
><P
>The compiler command that will be used is something like
<TT
CLASS="LITERAL"
>arm-elf-gcc</TT
>. This consists of a command prefix, in
this case <TT
CLASS="LITERAL"
>arm-elf</TT
>, and a specific command such as
<TT
CLASS="LITERAL"
>gcc</TT
>. The command prefix will depend on the target
architecture and is controlled by a configuration option in the
appropriate HAL package. It will have a sensible default value for the
current architecture, but users can modify this option when necessary.
The command prefix cannot be changed on a per-package basis, since
it is usually essential that all packages are built with a consistent
set of tools.</P
><P
>The <TT
CLASS="LITERAL"
>$(INCLUDE_PATH)</TT
> header file search path
consists of at least the following:</P
><P
></P
><OL
TYPE="1"
><LI
><P
>The <TT
CLASS="FILENAME"
>include</TT
> directory in the
install tree. This allows source files to access the various header
files exported by all the packages in the configuration, and also the
configuration header files.</P
></LI
><LI
><P
>The current package's root directory. This ensures that all files in
the package are accessible at build time.</P
></LI
><LI
><P
>The current package's <TT
CLASS="FILENAME"
>src</TT
>
subdirectory, if it is present. Generally all files to be compiled are
located in or below this directory. Typically this is used to access
private header files containing implementation details only.</P
></LI
></OL
><P
>The compiler flags <TT
CLASS="LITERAL"
>$(CFLAGS)</TT
> are determined in two
steps. First the appropriate HAL package will provide a configuration
option defining the global flags. Typically this includes flags that
are needed for the target processor, for example
<TT
CLASS="LITERAL"
>-mcpu=arm9</TT
>, various flags related to warnings,
debugging and optimization, and flags such as
<TT
CLASS="LITERAL"
>-finit-priority</TT
> which are needed by <SPAN
CLASS="APPLICATION"
>eCos</SPAN
> itself.
Users can modify the global flags option as required. In addition it
is possible for existing flags to be removed from and new flags to be
added to the current set on a per-package basis, again by means of
user-modifiable configuration options. More details are given below.</P
><P
>Component writers can assume that the build system will perform full
header file dependency analysis, including dependencies on
configuration headers, but the exact means by which this happens is
implementation-defined. Typical application developers are unlikely to
modify exported or private header files, but configuration headers are
likely to change as the configuration is changed to better meet the
needs of the application. Full header file dependency analysis also
makes things easier for the component writers themselves.</P
><P
>The current directory used during a compilation is an implementation
detail of the build system. However it can be assumed that each
package will have its own directory somewhere in the build tree, to
prevent file name clashes, that this will be the current directory,
and that intermediate object files will end up here.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="BUILD.MAKE.LIBRARIES">Generating the Libraries</H2
><P
>Once all the <SPAN
CLASS="PROPERTY"
>compile</SPAN
> and <SPAN
CLASS="PROPERTY"
>make_object</SPAN
> properties have been
processed and the required object files have been built or rebuilt,
these can be collected together in one or more libraries. The archiver
will be the <SPAN
CLASS="APPLICATION"
>ar</SPAN
> command
corresponding to the current architecture, for example <SPAN
CLASS="APPLICATION"
>powerpc-eabi-ar</SPAN
>. By default al of the
object files will end up in a single library
<TT
CLASS="FILENAME"
>libtarget.a</TT
>. This can be changed on a per-package
basis using the <A
HREF="ref.library.html"
><SPAN
CLASS="PROPERTY"
>library</SPAN
></A
> property
in the body of the corresponding <TT
CLASS="LITERAL"
>cdl_package</TT
> command, for example:</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>cdl_package &lt;SOME_PACKAGE&gt; {
    &#8230;
    library  libSomePackage.a
}</PRE
></TD
></TR
></TABLE
><P
>However using different libraries for each package should be avoided.
It makes things more difficult for application developers since they
now have to link the application code with more libraries, and
possibly even change this set of libraries when packages are added to
or removed from the configuration. The use of a single library
<TT
CLASS="FILENAME"
>libtarget.a</TT
> avoids any complications.</P
><P
>It is also possible to change the target library for individual files,
using a <TT
CLASS="LITERAL"
>-library</TT
> option with the corresponding
<SPAN
CLASS="PROPERTY"
>compile</SPAN
> or <SPAN
CLASS="PROPERTY"
>make_object</SPAN
> property. For example:</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>    compile -library=libSomePackage.a hello.c
    make_object -library=libSomePackage.a {
        &#8230;
    }</PRE
></TD
></TR
></TABLE
><P
>Again this should be avoided because it makes application development
more difficult. There is one special library which can be used freely,
<TT
CLASS="FILENAME"
>libextras.a</TT
>, which is used to generate the
<TT
CLASS="FILENAME"
>extras.o</TT
> file as described below.</P
><P
>The order in which object files end up in a library is not defined.
Typically each library will be created directly in the install tree,
since there is little point in generating a file in the build tree and
then immediately copying it to the install tree.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="BUILD.EXTRAS">The <TT
CLASS="FILENAME"
>extras.o</TT
> file</H2
><P
>Package sources files normally get compiled and then added to a
library, by default <TT
CLASS="FILENAME"
>libtarget.a</TT
>, which is then
linked with the application code. Because of the usual rules for
linking with libraries, augmented by the use of link-time garbage
collection, this means that code will only end up in the final
executable if there is a direct or indirect reference to it in the
application. Usually this is the desired behaviour: if the application
does not make any use of say kernel message boxes, directly or
indirectly, then that code should not end up in the final executable
taking up valuable memory space.</P
><P
>In a few cases it is desirable for package code to end up in the final
executable even if there are no direct or indirect references. For
example, device driver functions are often not called directly.
Instead the application will access the device via the string
<TT
CLASS="LITERAL"
>"/dev/xyzzy"</TT
> and call the device functions
indirectly. This will be impossible if the functions have been
removed at link-time.</P
><P
>Another example involves static C++ objects. It is possible to have a
static C++ object, preferably with a suitable constructor priority,
where all of the interesting work happens as a side effect of running
the constructor. For example a package might include a monitoring
thread or a garbage collection thread created from inside such a
constructor. Without a reference by the application to the static
object the latter will never get linked in, and the package will not
function as expected.</P
><P
>A third example would be copyright messages. A package vendor may want
to insist that all products shipped using that package include a
particular message in memory, even though many users of that package
will object to such a restriction.</P
><P
>To meet requirements such as these the build system provides support
for a file <TT
CLASS="FILENAME"
>extras.o</TT
>, which always gets linked
with the application code via the linker script. Because it is an
object file rather than a library everything in the file will be
linked in. The <TT
CLASS="FILENAME"
>extras.o</TT
> file is generated at the
end of a build from a library <TT
CLASS="FILENAME"
>libextras.a</TT
>, so
packages can put functions and variables in suitable source files and
add them to that library explicitly:</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>    compile -library=libextras.a xyzzy.c
    compile xyzzy_support.c</PRE
></TD
></TR
></TABLE
><P
>In this example <TT
CLASS="FILENAME"
>xyzzy.o</TT
> will end up in
<TT
CLASS="FILENAME"
>libextras.a</TT
>, and hence in
<TT
CLASS="FILENAME"
>extras.o</TT
> and in the final executable.
<TT
CLASS="FILENAME"
>xyzzy_support.o</TT
> will end up in
<TT
CLASS="FILENAME"
>libtarget.a</TT
> as usual, and is subject to linker
garbage collection.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="BUILD.FLAGS">Compilers and Flags</H2
><DIV
CLASS="CAUTION"
><P
></P
><TABLE
CLASS="CAUTION"
BORDER="1"
WIDTH="100%"
><TR
><TD
ALIGN="CENTER"
><B
>Caution</B
></TD
></TR
><TR
><TD
ALIGN="LEFT"
><P
>Some of the details of compiler selection and compiler flags described
below are subject to change in future revisions of the component
framework, although every reasonable attempt will be made to avoid
breaking backwards compatibility.</P
></TD
></TR
></TABLE
></DIV
><P
>The build system needs to know what compiler to use, what compiler
flags should be used for different stages of the build and so on. Much
of this information will vary from target to target, although users
should be able to override this when appropriate. There may also be a
need for some packages to modify the compiler flags. All platform HAL
packages should define a number of options with well-known names,
along the following lines (any existing platform HAL package can be
consulted for a complete example):</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品理伦片| 亚洲男同性恋视频| 一区二区三区高清在线| 免播放器亚洲一区| 99精品热视频| 久久亚洲一区二区三区四区| 天天色天天操综合| 欧美一级视频精品观看| 中文字幕亚洲综合久久菠萝蜜| 美女在线观看视频一区二区| 欧美性生活大片视频| 国产精品第13页| 成人午夜激情在线| 亚洲精品一区二区三区在线观看| 亚洲国产综合色| 日本韩国一区二区| 日韩久久一区二区| av电影天堂一区二区在线观看| 久久久久久久性| 美女视频黄频大全不卡视频在线播放| 欧美在线一区二区三区| 亚洲欧美激情一区二区| 91在线丨porny丨国产| 中文字幕一区二区三区在线不卡 | 国产精品嫩草久久久久| 国产一区二区三区在线看麻豆| 日韩午夜激情视频| 日av在线不卡| 精品欧美黑人一区二区三区| 麻豆视频观看网址久久| 日韩免费性生活视频播放| 男男成人高潮片免费网站| 欧美一区二区三区精品| 日韩不卡免费视频| 欧美成va人片在线观看| 精品影视av免费| 久久久综合视频| 成人教育av在线| 亚洲人xxxx| 欧美午夜在线一二页| 日韩不卡手机在线v区| 欧美变态tickle挠乳网站| 国内偷窥港台综合视频在线播放| 久久天天做天天爱综合色| 国产成人自拍网| 亚洲天堂久久久久久久| 欧美性生活一区| 久久精品国产99| 国产日本欧美一区二区| 色偷偷久久人人79超碰人人澡| 亚洲v中文字幕| 精品国产亚洲在线| voyeur盗摄精品| 亚洲国产精品久久人人爱蜜臀| 91精品国产色综合久久不卡蜜臀 | 亚洲欧美日韩精品久久久久| 在线中文字幕一区| 免费视频一区二区| 中文字幕欧美激情一区| 色哦色哦哦色天天综合| 久久精品国产网站| 国产精品国模大尺度视频| 欧美精品乱码久久久久久| 久久se这里有精品| 国产清纯白嫩初高生在线观看91| 91丨porny丨蝌蚪视频| 青青草国产成人99久久| 亚洲视频1区2区| 欧美成人精品3d动漫h| 色悠悠久久综合| 免费不卡在线观看| 亚洲精品免费播放| 久久久久久99精品| 91麻豆精品国产91久久久更新时间| 日韩免费电影一区| 久久99精品久久久久| 亚洲美女屁股眼交| www国产成人免费观看视频 深夜成人网| 成人做爰69片免费看网站| 日本麻豆一区二区三区视频| 亚洲国产精品成人综合| 日韩欧美精品在线视频| 色94色欧美sute亚洲13| 国产精品一区二区在线观看不卡| 一个色综合网站| 欧美国产综合色视频| 日韩一级黄色大片| 欧美日韩中字一区| 91麻豆国产在线观看| 国产露脸91国语对白| 蜜臀久久99精品久久久久久9| 亚洲日穴在线视频| 中文字幕国产一区二区| 欧美xxxxxxxx| 欧美一区二区视频在线观看2020| 一本一道综合狠狠老| 成人晚上爱看视频| 国产一区二三区| 久久精品国产久精国产| 日韩精品午夜视频| 亚洲成人福利片| 亚洲成人777| 亚洲高清免费视频| 一级做a爱片久久| 日韩一区欧美小说| 亚洲免费资源在线播放| 亚洲日本va午夜在线电影| 国产精品午夜久久| 亚洲国产激情av| 中文字幕在线不卡一区| 中文字幕日本乱码精品影院| 国产精品美女视频| 日韩美女久久久| 中文字幕字幕中文在线中不卡视频| 国产精品理论在线观看| 亚洲三级免费观看| 亚洲综合无码一区二区| 亚洲韩国精品一区| 日韩av不卡在线观看| 玖玖九九国产精品| 激情av综合网| yourporn久久国产精品| 一本大道av伊人久久综合| 色视频一区二区| 欧美日韩国产首页在线观看| 91精品国产综合久久小美女| 日韩精品一区二区三区中文不卡| 日韩欧美国产一区在线观看| 久久久久国产精品麻豆ai换脸 | 成人激情小说网站| 99久久精品99国产精品| 欧美色手机在线观看| 制服丝袜一区二区三区| 久久视频一区二区| 中文字幕一区二区三区精华液 | 国产精品久久久久久久岛一牛影视 | 国产一区不卡在线| av爱爱亚洲一区| 欧美日韩久久久| 日韩女同互慰一区二区| 国产精品女同一区二区三区| 亚洲高清免费观看高清完整版在线观看| 婷婷一区二区三区| 国产精品亚洲第一区在线暖暖韩国| 成人精品视频网站| 欧美日本视频在线| 国产亚洲女人久久久久毛片| 亚洲精品乱码久久久久久日本蜜臀| 免费成人性网站| 9久草视频在线视频精品| 制服丝袜亚洲色图| 中文字幕不卡的av| 日本美女视频一区二区| 成人国产精品免费观看动漫| 538prom精品视频线放| 亚洲国产电影在线观看| 日韩电影网1区2区| 白白色 亚洲乱淫| 欧美成人精品二区三区99精品| 亚洲美女屁股眼交| 国产精品综合视频| 7777精品伊人久久久大香线蕉 | 免费av成人在线| 91麻豆免费观看| 欧美tickle裸体挠脚心vk| 亚洲蜜臀av乱码久久精品| 国产制服丝袜一区| 在线播放中文一区| 中文字幕一区二区三区在线观看| 久久国产夜色精品鲁鲁99| 欧美在线综合视频| 中文字幕亚洲在| 国产成人免费av在线| 日韩欧美国产高清| 亚洲电影一区二区三区| eeuss影院一区二区三区| 26uuu另类欧美亚洲曰本| 日本在线观看不卡视频| 在线视频观看一区| 亚洲人成人一区二区在线观看| 国产精品原创巨作av| 欧美一区二区精品在线| 亚洲午夜私人影院| 日本韩国精品在线| 自拍偷拍欧美精品| av男人天堂一区| 国产精品久久久久久久久免费桃花 | 狠狠色丁香婷婷综合| 欧美一区二区视频在线观看2020 | 国产成人午夜高潮毛片| 日韩欧美亚洲另类制服综合在线| 亚洲一区在线观看免费| 欧洲人成人精品| 亚洲综合一区在线| 欧美日韩免费一区二区三区视频| 一区二区三区四区视频精品免费| 99热99精品| 亚洲免费电影在线| 在线观看国产精品网站| 午夜av一区二区|