€cdocutils.nodes document q)�q}q(U nametypesq}q(Xcross-compiled-librariesqˆXcross-compilerstoolsqˆX gcc toolchainqNX helloworldq ˆX gcc-overviewq ˆXusing-pthreadsq ˆXtoolchain-prefixq ˆXlocation-in-sdkq ˆXsimple-cross-compileqˆX arm-toolchainqˆXwhen-compiling-the-linux-kernelqˆXconfigureautotoolsqˆXenvironment-setup-scriptqˆXlinux-devkit-structureqˆuUsubstitution_defsq}q(X__SDK_INSTALL_DIR__qcdocutils.nodes substitution_definition q)�q}q(U rawsourceqXV.. |__SDK_INSTALL_DIR__| replace:: ti-processor-sdk-linux-[platformName]-evm-UparentqhUsourceqcdocutils.nodes reprunicode qX source/linux/replacevars.rst.incq…�q}q bUtagnameq!Usubstitution_definitionq"U attributesq#}q$(Udupnamesq%]Uclassesq&]Ubackrefsq']Uidsq(]Unamesq)]q*hauUlineq+KUdocumentq,hUchildrenq-]q.cdocutils.nodes Text q/X3ti-processor-sdk-linux-[platformName]-evm-q0…�q1}q2(hX3ti-processor-sdk-linux-[platformName]-evm-hhubaubX__SDK_INSTALL_FILE__q3h)�q4}q5(hXe.. |__SDK_INSTALL_FILE__| replace:: ti-processor-sdk-linux-[platform]--Linux-x86-Install.binhhhhh!h"h#}q6(h%]h&]h']h(]h)]q7h3auh+Kh,hh-]q8h/XAti-processor-sdk-linux-[platform]--Linux-x86-Install.binq9…�q:}q;(hXAti-processor-sdk-linux-[platform]--Linux-x86-Install.binhh4ubaubX__PART_FAMILY_DEVICE_NAMES__q(hX:.. |__PART_FAMILY_DEVICE_NAMES__| replace:: AM437x deviceshhhhh!h"h#}q?(h%]h&]h']h(]h)]q@h`__hhhhh!h"h#}ql(h%]h&]h']h(]h)]qmhiauh+K h,hh-]qncdocutils.nodes reference qo)�qp}qq(hXs`AM437X-Linux-SDK-Download-page `__h#}qr(UnameXAM437X-Linux-SDK-Download-pageUrefuriqsXNhttp://software-dl.ti.com/processor-sdk-linux/esd/AM437X/latest/index_FDS.htmlh(]h']h%]h&]h)]uhhjh-]qth/XAM437X-Linux-SDK-Download-pagequ…�qv}qw(hUhhpubah!U referenceqxubaubX__PART_FAMILY_NAME__qyh)�qz}q{(hX*.. |__PART_FAMILY_NAME__| replace:: AM437xhhhhh!h"h#}q|(h%]h&]h']h(]h)]q}hyauh+K h,hh-]q~h/XAM437xq…�q€}q�(hXAM437xhhzubaubX__LINUX_UBUNTU_VERSION_LONG__q‚h)�qƒ}q„(hXL.. |__LINUX_UBUNTU_VERSION_LONG__| replace:: 16.04 (64-bit), 18.04 (64-bit) hhhhh!h"h#}q…(h%]h&]h']h(]h)]q†h‚auh+K h,hh-]q‡h/X16.04 (64-bit), 18.04 (64-bit)qˆ…�q‰}qŠ(hX16.04 (64-bit), 18.04 (64-bit)hhƒubaubX__SDK_FULL_NAME__q‹h)�qŒ}q�(hX4.. |__SDK_FULL_NAME__| replace:: Processor SDK Linuxhhhhh!h"h#}qŽ(h%]h&]h']h(]h)]q�h‹auh+K h,hh-]q�h/XProcessor SDK Linuxq‘…�q’}q“(hXProcessor SDK Linuxq”hhŒubaubX__LINUX_UBUNTU_VERSION_SHORT__q•h)�q–}q—(hX<.. |__LINUX_UBUNTU_VERSION_SHORT__| replace:: 16.04 or 18.04hhhhh!h"h#}q˜(h%]h&]h']h(]h)]q™h•auh+K h,hh-]qšh/X16.04 or 18.04q›…�qœ}q�(hX16.04 or 18.04hh–ubaubX__WINDOWS_SUPPORTED_LONG__qžh)�qŸ}q (hX4.. |__WINDOWS_SUPPORTED_LONG__| replace:: 7 (64-bit)hhhhh!h"h#}q¡(h%]h&]h']h(]h)]q¢hžauh+Kh,hh-]q£h/X 7 (64-bit)q¤…�q¥}q¦(hX 7 (64-bit)hhŸubaubuUparse_messagesq§]q¨(cdocutils.nodes system_message q©)�qª}q«(hUhcdocutils.nodes section q¬)�q­}q®(hUhhhXV/home/gtbldadm/nightlybuilds/processor-sdk-doc/source/linux/Overview/GCC_ToolChain.rstq¯h!Usectionq°h#}q±(h%]h&]h']h(]q²U gcc-toolchainq³ah)]q´hauh+Kh,hh-]qµ(cdocutils.nodes title q¶)�q·}q¸(hX GCC ToolChainq¹hh­hh¯h!Utitleqºh#}q»(h%]h&]h']h(]h)]uh+Kh,hh-]q¼h/X GCC ToolChainq½…�q¾}q¿(hh¹hh·ubaubcdocutils.nodes comment qÀ)�qÁ}qÂ(hXIhttp://processors.wiki.ti.com/index.php/Processor_Linux_SDK_GCC_Toolchainhh­hh¯h!UcommentqÃh#}qÄ(U xml:spaceqÅUpreserveqÆh(]h']h%]h&]h)]uh+Kh,hh-]qÇh/XIhttp://processors.wiki.ti.com/index.php/Processor_Linux_SDK_GCC_ToolchainqÈ…�qÉ}qÊ(hUhhÁubaubcdocutils.nodes rubric qË)�qÌ}qÍ(hXOverviewqÎhh­hh¯h!UrubricqÏh#}qÐ(h(]qÑU gcc-overviewqÒah']h%]h&]h)]qÓh auh+Nh,hh-]qÔh/XOverviewqÕ…�qÖ}q×(hhÎhhÌubaubcdocutils.nodes paragraph qØ)�qÙ}qÚ(hXqThe |__SDK_FULL_NAME__| package contains an ARM-based toolchain for Cortex A devices. The ARM toolchain also enables hardware floating point (hardfp) support. Older toolchains including arm-arago-linux-gnueabi- uses software floating point (softfp). This results in software built using a hardfp toolchain being incompatible with software built with a softfp toolchain.hh­hh¯h!U paragraphqÛh#}qÜ(h%]h&]h']h(]h)]uh+K h,hh-]qÝ(h/XThe qÞ…�qß}qà(hXThe hhÙubh/XProcessor SDK Linuxqá…�qâ}qã(hh”hNh+Nh,hhhÙubh/XZ package contains an ARM-based toolchain for Cortex A devices. The ARM toolchain also enables hardware floating point (hardfp) support. Older toolchains including arm-arago-linux-gnueabi- uses software floating point (softfp). This results in software built using a hardfp toolchain being incompatible with software built with a softfp toolchain.qä…�qå}qæ(hXZ package contains an ARM-based toolchain for Cortex A devices. The ARM toolchain also enables hardware floating point (hardfp) support. Older toolchains including arm-arago-linux-gnueabi- uses software floating point (softfp). This results in software built using a hardfp toolchain being incompatible with software built with a softfp toolchain.hhÙubeubhË)�qç}qè(hX ARM Toolchainqéhh­hh¯h!hÏh#}qê(h(]qëU arm-toolchainqìah']h%]h&]h)]qíhauh+Nh,hh-]qîh/X ARM Toolchainqï…�qð}qñ(hhéhhçubaubhØ)�qò}qó(hXnThe |__SDK_FULL_NAME__| package uses an ARM-based tool chain. Other than using a newer version of GCC, the ARM tool chain also supports hard floating point, also known as Hard-FP. Hard-FP uses the FPU on the ARM instead of simulating it. Older tool chains including the Arago tool chain uses soft floating point (Soft-FP). Binaries built using a soft-fp tool chain are not compatible with binaries built using a hard-fp. Therefore, you must rebuild all binaries to use either hard-fp and soft-fp since you can't mix and match. By default, all binaries included in the |__SDK_FULL_NAME__| package will be built for hard-fp.hh­hh¯h!hÛh#}qô(h%]h&]h']h(]h)]uh+Kh,hh-]qõ(h/XThe qö…�q÷}qø(hXThe hhòubh/XProcessor SDK Linuxqù…�qú}qû(hh”hNh+Nh,hhhòubh/X! package uses an ARM-based tool chain. Other than using a newer version of GCC, the ARM tool chain also supports hard floating point, also known as Hard-FP. Hard-FP uses the FPU on the ARM instead of simulating it. Older tool chains including the Arago tool chain uses soft floating point (Soft-FP). Binaries built using a soft-fp tool chain are not compatible with binaries built using a hard-fp. Therefore, you must rebuild all binaries to use either hard-fp and soft-fp since you can't mix and match. By default, all binaries included in the qü…�qý}qþ(hX! package uses an ARM-based tool chain. Other than using a newer version of GCC, the ARM tool chain also supports hard floating point, also known as Hard-FP. Hard-FP uses the FPU on the ARM instead of simulating it. Older tool chains including the Arago tool chain uses soft floating point (Soft-FP). Binaries built using a soft-fp tool chain are not compatible with binaries built using a hard-fp. Therefore, you must rebuild all binaries to use either hard-fp and soft-fp since you can't mix and match. By default, all binaries included in the hhòubh/XProcessor SDK Linuxqÿ…�r}r(hh”hNh+Nh,hhhòubh/X# package will be built for hard-fp.r…�r}r(hX# package will be built for hard-fp.hhòubeubhØ)�r}r(hXAThe name of the toolchain binaries have also been updated from older versions of the SDK. Previous versions may have used a prefix of "**arm-arago-linux-gnueabi-**". Current SDK ARMv7 toolchains use a prefix of "**arm-linux-gnueabihf-**" For example, the new toolchain's gcc compiler is named **arm-linux-gnueabihf-gcc**.hh­hh¯h!hÛh#}r(h%]h&]h']h(]h)]uh+Kh,hh-]r(h/X‡The name of the toolchain binaries have also been updated from older versions of the SDK. Previous versions may have used a prefix of "r …�r }r (hX‡The name of the toolchain binaries have also been updated from older versions of the SDK. Previous versions may have used a prefix of "hjubcdocutils.nodes strong r )�r }r(hX**arm-arago-linux-gnueabi-**h#}r(h%]h&]h']h(]h)]uhjh-]rh/Xarm-arago-linux-gnueabi-r…�r}r(hUhj ubah!Ustrongrubh/X1". Current SDK ARMv7 toolchains use a prefix of "r…�r}r(hX1". Current SDK ARMv7 toolchains use a prefix of "hjubj )�r}r(hX**arm-linux-gnueabihf-**h#}r(h%]h&]h']h(]h)]uhjh-]rh/Xarm-linux-gnueabihf-r…�r}r(hUhjubah!jubh/X9" For example, the new toolchain's gcc compiler is named r…�r }r!(hX9" For example, the new toolchain's gcc compiler is named hjubj )�r"}r#(hX**arm-linux-gnueabihf-gcc**h#}r$(h%]h&]h']h(]h)]uhjh-]r%h/Xarm-linux-gnueabihf-gccr&…�r'}r((hUhj"ubah!jubh/X.…�r)}r*(hX.hjubeubhË)�r+}r,(hXLinux-Devkit Structurer-hh­hh¯h!hÏh#}r.(h(]r/Ulinux-devkit-structurer0ah']h%]h&]h)]r1hauh+Nh,hh-]r2h/XLinux-Devkit Structurer3…�r4}r5(hj-hj+ubaubhØ)�r6}r7(hXCHere is the structure of the Linux-devkit directory within the SDK.r8hh­hh¯h!hÛh#}r9(h%]h&]h']h(]h)]uh+K'h,hh-]r:h/XCHere is the structure of the Linux-devkit directory within the SDK.r;…�r<}r=(hj8hj6ubaubcdocutils.nodes table r>)�r?}r@(hUhh­hh¯h!UtablerAh#}rB(h%]h&]h']h(]h)]uh+Nh,hh-]rCcdocutils.nodes tgroup rD)�rE}rF(hUh#}rG(h(]h']h%]h&]h)]UcolsKuhj?h-]rH(cdocutils.nodes colspec rI)�rJ}rK(hUh#}rL(h(]h']h%]h&]h)]UcolwidthK1uhjEh-]h!UcolspecrMubjI)�rN}rO(hUh#}rP(h(]h']h%]h&]h)]UcolwidthKUuhjEh-]h!jMubcdocutils.nodes tbody rQ)�rR}rS(hUh#}rT(h%]h&]h']h(]h)]uhjEh-]rU(cdocutils.nodes row rV)�rW}rX(hUh#}rY(h%]h&]h']h(]h)]uhjRh-]rZ(cdocutils.nodes entry r[)�r\}r](hUh#}r^(h%]h&]h']h(]h)]uhjWh-]r_hØ)�r`}ra(hXElementrbhj\hh¯h!hÛh#}rc(h%]h&]h']h(]h)]uh+K*h-]rdh/XElementre…�rf}rg(hjbhj`ubaubah!Uentryrhubj[)�ri}rj(hUh#}rk(h%]h&]h']h(]h)]uhjWh-]rlhØ)�rm}rn(hXLocationrohjihh¯h!hÛh#}rp(h%]h&]h']h(]h)]uh+K*h-]rqh/XLocationrr…�rs}rt(hjohjmubaubah!jhubeh!UrowruubjV)�rv}rw(hUh#}rx(h%]h&]h']h(]h)]uhjRh-]ry(j[)�rz}r{(hUh#}r|(h%]h&]h']h(]h)]uhjvh-]r}hØ)�r~}r(hXToolchain Locationr€hjzhh¯h!hÛh#}r�(h%]h&]h']h(]h)]uh+K,h-]r‚h/XToolchain Locationrƒ…�r„}r…(hj€hj~ubaubah!jhubj[)�r†}r‡(hUh#}rˆ(h%]h&]h']h(]h)]uhjvh-]r‰hØ)�rŠ}r‹(hX1linux-devkit/sysroots/x86\_64-arago-linux/usr/binhj†hh¯h!hÛh#}rŒ(h%]h&]h']h(]h)]uh+K,h-]r�h/X0linux-devkit/sysroots/x86_64-arago-linux/usr/binrŽ…�r�}r�(hX1linux-devkit/sysroots/x86\_64-arago-linux/usr/binhjŠubaubah!jhubeh!juubjV)�r‘}r’(hUh#}r“(h%]h&]h']h(]h)]uhjRh-]r”(j[)�r•}r–(hUh#}r—(h%]h&]h']h(]h)]uhj‘h-]r˜hØ)�r™}rš(hX Cross Compile Libraries Locationr›hj•hh¯h!hÛh#}rœ(h%]h&]h']h(]h)]uh+K.h-]r�h/X Cross Compile Libraries Locationrž…�rŸ}r (hj›hj™ubaubah!jhubj[)�r¡}r¢(hUh#}r£(h%]h&]h']h(]h)]uhj‘h-]r¤hØ)�r¥}r¦(hXMlinux-devkit/sysroots/-vfp-neon-linux-gnueabi/usr/libr§hj¡hh¯h!hÛh#}r¨(h%]h&]h']h(]h)]uh+K.h-]r©h/XMlinux-devkit/sysroots/-vfp-neon-linux-gnueabi/usr/librª…�r«}r¬(hj§hj¥ubaubah!jhubeh!juubjV)�r­}r®(hUh#}r¯(h%]h&]h']h(]h)]uhjRh-]r°(j[)�r±}r²(hUh#}r³(h%]h&]h']h(]h)]uhj­h-]r´hØ)�rµ}r¶(hX-Headers for Cross Compiled Libraries Locationr·hj±hh¯h!hÛh#}r¸(h%]h&]h']h(]h)]uh+K0h-]r¹h/X-Headers for Cross Compiled Libraries Locationrº…�r»}r¼(hj·hjµubaubah!jhubj[)�r½}r¾(hUh#}r¿(h%]h&]h']h(]h)]uhj­h-]rÀhØ)�rÁ}rÂ(hXQlinux-devkit/sysroots/-vfp-neon-linux-gnueabi/usr/includerÃhj½hh¯h!hÛh#}rÄ(h%]h&]h']h(]h)]uh+K0h-]rÅh/XQlinux-devkit/sysroots/-vfp-neon-linux-gnueabi/usr/includerÆ…�rÇ}rÈ(hjÃhjÁubaubah!jhubeh!juubeh!UtbodyrÉubeh!UtgrouprÊubaubhË)�rË}rÌ(hXLocation in SDKrÍhh­hh¯h!hÏh#}rÎ(h(]rÏUlocation-in-sdkrÐah']h%]h&]h)]rÑh auh+Nh,hh-]rÒh/XLocation in SDKrÓ…�rÔ}rÕ(hjÍhjËubaubhØ)�rÖ}r×(hX¥The toolchain is located in the Linux SDK in the **/linux-devkit** directory. The following sections will cover the key components of the toolchain.hh­hh¯h!hÛh#}rØ(h%]h&]h']h(]h)]uh+K6h,hh-]rÙ(h/X1The toolchain is located in the Linux SDK in the rÚ…�rÛ}rÜ(hX1The toolchain is located in the Linux SDK in the hjÖubj )�rÝ}rÞ(hX"**/linux-devkit**h#}rß(h%]h&]h']h(]h)]uhjÖh-]ràh/X/linux-devkitrá…�râ}rã(hUhjÝubah!jubh/XR directory. The following sections will cover the key components of the toolchain.rä…�rå}ræ(hXR directory. The following sections will cover the key components of the toolchain.hjÖubeubhË)�rç}rè(hXCross-Compilers/Toolsréhh­hh¯h!hÏh#}rê(h(]rëUcross-compilerstoolsrìah']h%]h&]h)]ríhauh+Nh,hh-]rîh/XCross-Compilers/Toolsrï…�rð}rñ(hjéhjçubaubhØ)�rò}ró(hXâThe cross-compilers and tools such as qmake2 can be found the the **/linux-devkit/sysroots/x86\_64-arago-linux/usr/bin** directory. Adding this directory to your PATH will allow using these tools. For example:hh­hh¯h!hÛh#}rô(h%]h&]h']h(]h)]uh+K=h,hh-]rõ(h/XBThe cross-compilers and tools such as qmake2 can be found the the rö…�r÷}rø(hXBThe cross-compilers and tools such as qmake2 can be found the the hjòubj )�rù}rú(hXG**/linux-devkit/sysroots/x86\_64-arago-linux/usr/bin**h#}rû(h%]h&]h']h(]h)]uhjòh-]rüh/XB/linux-devkit/sysroots/x86_64-arago-linux/usr/binrý…�rþ}rÿ(hUhjùubah!jubh/XY directory. Adding this directory to your PATH will allow using these tools. For example:r…�r}r(hXY directory. Adding this directory to your PATH will allow using these tools. For example:hjòubeubhØ)�r}r(hXa**host# export PATH="/linux-devkit/sysroots/x86\_64-arago-linux/usr/bin:$PATH"**hh­hh¯h!hÛh#}r(h%]h&]h']h(]h)]uh+KAh,hh-]rj )�r}r(hXa**host# export PATH="/linux-devkit/sysroots/x86\_64-arago-linux/usr/bin:$PATH"**h#}r (h%]h&]h']h(]h)]uhjh-]r h/X\host# export PATH="/linux-devkit/sysroots/x86_64-arago-linux/usr/bin:$PATH"r …�r }r (hUhjubah!jubaubhØ)�r}r(hXáAdditional tools are also located here such as the **qmake2, rcc, uic** tools used by Qt. In addition there is a qt.conf file that can be used by tools such as Qt creator to use the pre-built libraries found in the Linux SDK.hh­hh¯h!hÛh#}r(h%]h&]h']h(]h)]uh+KDh,hh-]r(h/X3Additional tools are also located here such as the r…�r}r(hX3Additional tools are also located here such as the hjubj )�r}r(hX**qmake2, rcc, uic**h#}r(h%]h&]h']h(]h)]uhjh-]rh/Xqmake2, rcc, uicr…�r}r(hUhjubah!jubh/Xš tools used by Qt. In addition there is a qt.conf file that can be used by tools such as Qt creator to use the pre-built libraries found in the Linux SDK.r…�r}r(hXš tools used by Qt. In addition there is a qt.conf file that can be used by tools such as Qt creator to use the pre-built libraries found in the Linux SDK.hjubeubhË)�r}r (hXToolchain Prefixr!hh­hh¯h!hÏh#}r"(h(]r#Utoolchain-prefixr$ah']h%]h&]h)]r%h auh+Nh,hh-]r&h/XToolchain Prefixr'…�r(}r)(hj!hjubaubhØ)�r*}r+(hXDThe cross-compile tools are prefixed with a unique target triplet which indicates the architecture and OS of the output executable code. For example, the prefix **arm-linux-gnueabihf-** indicates the ARMv7 achitecture running the Linux OS, and thus the corresponding GCC cross compiler is called **arm-linux-gnueabihf-gcc**.hh­hh¯h!hÛh#}r,(h%]h&]h']h(]h)]uh+KKh,hh-]r-(h/X¡The cross-compile tools are prefixed with a unique target triplet which indicates the architecture and OS of the output executable code. For example, the prefix r.…�r/}r0(hX¡The cross-compile tools are prefixed with a unique target triplet which indicates the architecture and OS of the output executable code. For example, the prefix hj*ubj )�r1}r2(hX**arm-linux-gnueabihf-**h#}r3(h%]h&]h']h(]h)]uhj*h-]r4h/Xarm-linux-gnueabihf-r5…�r6}r7(hUhj1ubah!jubh/Xo indicates the ARMv7 achitecture running the Linux OS, and thus the corresponding GCC cross compiler is called r8…�r9}r:(hXo indicates the ARMv7 achitecture running the Linux OS, and thus the corresponding GCC cross compiler is called hj*ubj )�r;}r<(hX**arm-linux-gnueabihf-gcc**h#}r=(h%]h&]h']h(]h)]uhj*h-]r>h/Xarm-linux-gnueabihf-gccr?…�r@}rA(hUhj;ubah!jubh/X.…�rB}rC(hX.hj*ubeubhØ)�rD}rE(hXrReference the table below for all toolchain prefixes and their corresponding architectures found in Processor SDK.rFhh­hh¯h!hÛh#}rG(h%]h&]h']h(]h)]uh+KQh,hh-]rHh/XrReference the table below for all toolchain prefixes and their corresponding architectures found in Processor SDK.rI…�rJ}rK(hjFhjDubaubcsphinx.ext.ifconfig ifconfig rL)�rM}rN(hUhh­hh¯h!UifconfigrOh#}rP(UexprrQXCONFIG_sdk in ('PLSDK')h(]h']h%]h&]h)]uh+KTh,hh-]rRj>)�rS}rT(hUhjMhh¯h!jAh#}rU(h%]h&]h']h(]h)]uh+Nh,hh-]rVjD)�rW}rX(hUh#}rY(h(]h']h%]h&]h)]UcolsKuhjSh-]rZ(jI)�r[}r\(hUh#}r](h(]h']h%]h&]h)]UcolwidthKuhjWh-]h!jMubjI)�r^}r_(hUh#}r`(h(]h']h%]h&]h)]UcolwidthKuhjWh-]h!jMubjI)�ra}rb(hUh#}rc(h(]h']h%]h&]h)]UcolwidthKIuhjWh-]h!jMubjQ)�rd}re(hUh#}rf(h%]h&]h']h(]h)]uhjWh-]rg(jV)�rh}ri(hUh#}rj(h%]h&]h']h(]h)]uhjdh-]rk(j[)�rl}rm(hUh#}rn(h%]h&]h']h(]h)]uhjhh-]rohØ)�rp}rq(hXToolchain Prefixrrhjlhh¯h!hÛh#}rs(h%]h&]h']h(]h)]uh+KWh-]rth/XToolchain Prefixru…�rv}rw(hjrhjpubaubah!jhubj[)�rx}ry(hUh#}rz(h%]h&]h']h(]h)]uhjhh-]r{hØ)�r|}r}(hX Architecturer~hjxhh¯h!hÛh#}r(h%]h&]h']h(]h)]uh+KWh-]r€h/X Architecturer�…�r‚}rƒ(hj~hj|ubaubah!jhubj[)�r„}r…(hUh#}r†(h%]h&]h']h(]h)]uhjhh-]r‡hØ)�rˆ}r‰(hXProcessor SDK DevicerŠhj„hh¯h!hÛh#}r‹(h%]h&]h']h(]h)]uh+KWh-]rŒh/XProcessor SDK Devicer�…�rŽ}r�(hjŠhjˆubaubah!jhubeh!juubjV)�r�}r‘(hUh#}r’(h%]h&]h']h(]h)]uhjdh-]r“(j[)�r”}r•(hUh#}r–(h%]h&]h']h(]h)]uhj�h-]r—hØ)�r˜}r™(hXarm-oe-linux-gnueabi-ršhj”hh¯h!hÛh#}r›(h%]h&]h']h(]h)]uh+KYh-]rœh/Xarm-oe-linux-gnueabi-r�…�rž}rŸ(hjšhj˜ubaubah!jhubj[)�r }r¡(hUh#}r¢(h%]h&]h']h(]h)]uhj�h-]r£hØ)�r¤}r¥(hXARMv5r¦hj hh¯h!hÛh#}r§(h%]h&]h']h(]h)]uh+KYh-]r¨h/XARMv5r©…�rª}r«(hj¦hj¤ubaubah!jhubj[)�r¬}r­(hUh#}r®(h%]h&]h']h(]h)]uhj�h-]r¯hØ)�r°}r±(hX omapl138-lcdkr²hj¬hh¯h!hÛh#}r³(h%]h&]h']h(]h)]uh+KYh-]r´h/X omapl138-lcdkrµ…�r¶}r·(hj²hj°ubaubah!jhubeh!juubjV)�r¸}r¹(hUh#}rº(h%]h&]h']h(]h)]uhjdh-]r»(j[)�r¼}r½(hUh#}r¾(h%]h&]h']h(]h)]uhj¸h-]r¿hØ)�rÀ}rÁ(hXarm-linux-gnueabihf-rÂhj¼hh¯h!hÛh#}rÃ(h%]h&]h']h(]h)]uh+K[h-]rÄh/Xarm-linux-gnueabihf-rÅ…�rÆ}rÇ(hjÂhjÀubaubah!jhubj[)�rÈ}rÉ(hUh#}rÊ(h%]h&]h']h(]h)]uhj¸h-]rËhØ)�rÌ}rÍ(hXARMv7rÎhjÈhh¯h!hÛh#}rÏ(h%]h&]h']h(]h)]uh+K[h-]rÐh/XARMv7rÑ…�rÒ}rÓ(hjÎhjÌubaubah!jhubj[)�rÔ}rÕ(hUh#}rÖ(h%]h&]h']h(]h)]uhj¸h-]r×hØ)�rØ}rÙ(hXGam335x-evm, am437x-evm, am57xx-evm, k2e-evm, k2g-evm, k2hk-evm, k2l-evmrÚhjÔhh¯h!hÛh#}rÛ(h%]h&]h']h(]h)]uh+K[h-]rÜh/XGam335x-evm, am437x-evm, am57xx-evm, k2e-evm, k2g-evm, k2hk-evm, k2l-evmrÝ…�rÞ}rß(hjÚhjØubaubah!jhubeh!juubjV)�rà}rá(hUh#}râ(h%]h&]h']h(]h)]uhjdh-]rã(j[)�rä}rå(hUh#}ræ(h%]h&]h']h(]h)]uhjàh-]rçhØ)�rè}ré(hXaarch64-linux-gnu-rêhjähh¯h!hÛh#}rë(h%]h&]h']h(]h)]uh+K]h-]rìh/Xaarch64-linux-gnu-rí…�rî}rï(hjêhjèubaubah!jhubj[)�rð}rñ(hUh#}rò(h%]h&]h']h(]h)]uhjàh-]róhØ)�rô}rõ(hXARMv8röhjðhh¯h!hÛh#}r÷(h%]h&]h']h(]h)]uh+K]h-]røh/XARMv8rù…�rú}rû(hjöhjôubaubah!jhubj[)�rü}rý(hUh#}rþ(h%]h&]h']h(]h)]uhjàh-]rÿhØ)�r}r(hX am65xx-evmrhjühh¯h!hÛh#}r(h%]h&]h']h(]h)]uh+K]h-]rh/X am65xx-evmr…�r}r(hjhjubaubah!jhubeh!juubeh!jÉubeh!jÊubaubaubjL)�r}r (hUhh­hh¯h!jOh#}r (jQXCONFIG_sdk in ('PSDKLA')h(]h']h%]h&]h)]uh+K`h,hh-]r j>)�r }r (hUhjhh¯h!jAh#}r(h%]h&]h']h(]h)]uh+Nh,hh-]rjD)�r}r(hUh#}r(h(]h']h%]h&]h)]UcolsKuhj h-]r(jI)�r}r(hUh#}r(h(]h']h%]h&]h)]UcolwidthKuhjh-]h!jMubjI)�r}r(hUh#}r(h(]h']h%]h&]h)]UcolwidthKuhjh-]h!jMubjI)�r}r(hUh#}r(h(]h']h%]h&]h)]UcolwidthKIuhjh-]h!jMubjQ)�r}r(hUh#}r(h%]h&]h']h(]h)]uhjh-]r (jV)�r!}r"(hUh#}r#(h%]h&]h']h(]h)]uhjh-]r$(j[)�r%}r&(hUh#}r'(h%]h&]h']h(]h)]uhj!h-]r(hØ)�r)}r*(hXToolchain Prefixr+hj%hh¯h!hÛh#}r,(h%]h&]h']h(]h)]uh+Kch-]r-h/XToolchain Prefixr.…�r/}r0(hj+hj)ubaubah!jhubj[)�r1}r2(hUh#}r3(h%]h&]h']h(]h)]uhj!h-]r4hØ)�r5}r6(hX Architecturer7hj1hh¯h!hÛh#}r8(h%]h&]h']h(]h)]uh+Kch-]r9h/X Architecturer:…�r;}r<(hj7hj5ubaubah!jhubj[)�r=}r>(hUh#}r?(h%]h&]h']h(]h)]uhj!h-]r@hØ)�rA}rB(hXProcessor SDK DevicerChj=hh¯h!hÛh#}rD(h%]h&]h']h(]h)]uh+Kch-]rEh/XProcessor SDK DevicerF…�rG}rH(hjChjAubaubah!jhubeh!juubjV)�rI}rJ(hUh#}rK(h%]h&]h']h(]h)]uhjh-]rL(j[)�rM}rN(hUh#}rO(h%]h&]h']h(]h)]uhjIh-]rPhØ)�rQ}rR(hXaarch64-linux-gnu-rShjMhh¯h!hÛh#}rT(h%]h&]h']h(]h)]uh+Keh-]rUh/Xaarch64-linux-gnu-rV…�rW}rX(hjShjQubaubah!jhubj[)�rY}rZ(hUh#}r[(h%]h&]h']h(]h)]uhjIh-]r\hØ)�r]}r^(hXARMv8r_hjYhh¯h!hÛh#}r`(h%]h&]h']h(]h)]uh+Keh-]rah/XARMv8rb…�rc}rd(hj_hj]ubaubah!jhubj[)�re}rf(hUh#}rg(h%]h&]h']h(]h)]uhjIh-]rhhØ)�ri}rj(hXj7-evmrkhjehh¯h!hÛh#}rl(h%]h&]h']h(]h)]uh+Keh-]rmh/Xj7-evmrn…�ro}rp(hjkhjiubaubah!jhubeh!juubeh!jÉubeh!jÊubaubaubhØ)�rq}rr(hXÿIn an effort to be succient, the specific toolchain prefix will be replaced with ${TOOLCHAIN_PREFIX} in the examples below. In fact, the `environment-setup script <#environment-setup-script>`__, described below, will set this variable in your environment.hh­hh¯h!hÛh#}rs(h%]h&]h']h(]h)]uh+Khh,hh-]rt(h/X‰In an effort to be succient, the specific toolchain prefix will be replaced with ${TOOLCHAIN_PREFIX} in the examples below. In fact, the ru…�rv}rw(hX‰In an effort to be succient, the specific toolchain prefix will be replaced with ${TOOLCHAIN_PREFIX} in the examples below. In fact, the hjqubho)�rx}ry(hX8`environment-setup script <#environment-setup-script>`__h#}rz(UnameXenvironment-setup scripthsX#environment-setup-scripth(]h']h%]h&]h)]uhjqh-]r{h/Xenvironment-setup scriptr|…�r}}r~(hUhjxubah!hxubh/X>, described below, will set this variable in your environment.r…�r€}r�(hX>, described below, will set this variable in your environment.hjqubeubhË)�r‚}rƒ(hXCross-Compiled Librariesr„hh­hh¯h!hÏh#}r…(h(]r†Ucross-compiled-librariesr‡ah']h%]h&]h)]rˆhauh+Nh,hh-]r‰h/XCross-Compiled LibrariesrŠ…�r‹}rŒ(hj„hj‚ubaubhØ)�r�}rŽ(hXbThe toolchain within the Linux SDK contains more than just the cross-compiler, it also contains pre-built libraries that can be used in your applications without requiring you to cross-compile them yourself. These libraries include packages from alsa to zlib. The libraries are located in the **/linux-devkit/sysroots/-vfp-neon-linux-gnueabi/** directory. For a list of the libraries you can refer to the software manifest found in the **/docs** directory or look at the list of libraries available in the **/linux-devkit/sysroots/-vfp-neon-linux-gnueabi/usr/lib** directory. You will also find the header files corresponding to these libraries in the **/linux-devkit/sysroots/-vfp-neon-linux-gnueabi/usr/include** directory. Usage of these libraries will be covered in more detail in the next sections, but as an example if your application wants access to the alsa asound library then you can now do the following command (assuming you have added the cross compiler to your PATH):hh­hh¯h!hÛh#}r�(h%]h&]h']h(]h)]uh+Kph,hh-]r�(h/X%The toolchain within the Linux SDK contains more than just the cross-compiler, it also contains pre-built libraries that can be used in your applications without requiring you to cross-compile them yourself. These libraries include packages from alsa to zlib. The libraries are located in the r‘…�r’}r“(hX%The toolchain within the Linux SDK contains more than just the cross-compiler, it also contains pre-built libraries that can be used in your applications without requiring you to cross-compile them yourself. These libraries include packages from alsa to zlib. The libraries are located in the hj�ubj )�r”}r•(hX\**/linux-devkit/sysroots/-vfp-neon-linux-gnueabi/**h#}r–(h%]h&]h']h(]h)]uhj�h-]r—h/XX/linux-devkit/sysroots/-vfp-neon-linux-gnueabi/r˜…�r™}rš(hUhj”ubah!jubh/X\ directory. For a list of the libraries you can refer to the software manifest found in the r›…�rœ}r�(hX\ directory. For a list of the libraries you can refer to the software manifest found in the hj�ubj )�rž}rŸ(hX**/docs**h#}r (h%]h&]h']h(]h)]uhj�h-]r¡h/X/docsr¢…�r£}r¤(hUhjžubah!jubh/X= directory or look at the list of libraries available in the r¥…�r¦}r§(hX= directory or look at the list of libraries available in the hj�ubj )�r¨}r©(hXc**/linux-devkit/sysroots/-vfp-neon-linux-gnueabi/usr/lib**h#}rª(h%]h&]h']h(]h)]uhj�h-]r«h/X_/linux-devkit/sysroots/-vfp-neon-linux-gnueabi/usr/libr¬…�r­}r®(hUhj¨ubah!jubh/XX directory. You will also find the header files corresponding to these libraries in the r¯…�r°}r±(hXX directory. You will also find the header files corresponding to these libraries in the hj�ubj )�r²}r³(hXg**/linux-devkit/sysroots/-vfp-neon-linux-gnueabi/usr/include**h#}r´(h%]h&]h']h(]h)]uhj�h-]rµh/Xc/linux-devkit/sysroots/-vfp-neon-linux-gnueabi/usr/includer¶…�r·}r¸(hUhj²ubah!jubh/X  directory. Usage of these libraries will be covered in more detail in the next sections, but as an example if your application wants access to the alsa asound library then you can now do the following command (assuming you have added the cross compiler to your PATH):r¹…�rº}r»(hX  directory. Usage of these libraries will be covered in more detail in the next sections, but as an example if your application wants access to the alsa asound library then you can now do the following command (assuming you have added the cross compiler to your PATH):hj�ubeubhØ)�r¼}r½(hX<**host# ${TOOLCHAIN_PREFIX}gcc -lasound app.c -o app.out** |hh­hh¯h!hÛh#}r¾(h%]h&]h']h(]h)]uh+Kƒh,hh-]r¿(j )�rÀ}rÁ(hX:**host# ${TOOLCHAIN_PREFIX}gcc -lasound app.c -o app.out**h#}rÂ(h%]h&]h']h(]h)]uhj¼h-]rÃh/X6host# ${TOOLCHAIN_PREFIX}gcc -lasound app.c -o app.outrÄ…�rÅ}rÆ(hUhjÀubah!jubh/X |rÇ…�rÈ}rÉ(hX |hj¼ubeubhË)�rÊ}rË(hXenvironment-setup scriptrÌhh­hh¯h!hÏh#}rÍ(h(]rÎUenvironment-setup-scriptrÏah']h%]h&]h)]rÐhauh+Nh,hh-]rÑh/Xenvironment-setup scriptrÒ…�rÓ}rÔ(hjÌhjÊubaubhØ)�rÕ}rÖ(hX^When cross-compiling packages that use configuration tools and autotools there are many settings that are required to make sure that the proper cross-compile libraries are used. The **environment-setup** script located in the **/linux-devkit** directory handles this for you. This script exports variables to perform actions such as:hh­hh¯h!hÛh#}r×(h%]h&]h']h(]h)]uh+K‰h,hh-]rØ(h/X¶When cross-compiling packages that use configuration tools and autotools there are many settings that are required to make sure that the proper cross-compile libraries are used. The rÙ…�rÚ}rÛ(hX¶When cross-compiling packages that use configuration tools and autotools there are many settings that are required to make sure that the proper cross-compile libraries are used. The hjÕubj )�rÜ}rÝ(hX**environment-setup**h#}rÞ(h%]h&]h']h(]h)]uhjÕh-]rßh/Xenvironment-setuprà…�rá}râ(hUhjÜubah!jubh/X script located in the rã…�rä}rå(hX script located in the hjÕubj )�ræ}rç(hX"**/linux-devkit**h#}rè(h%]h&]h']h(]h)]uhjÕh-]réh/X/linux-devkitrê…�rë}rì(hUhjæubah!jubh/XZ directory handles this for you. This script exports variables to perform actions such as:rí…�rî}rï(hXZ directory handles this for you. This script exports variables to perform actions such as:hjÕubeubcdocutils.nodes bullet_list rð)�rñ}rò(hUhh­hh¯h!U bullet_listróh#}rô(UbulletrõX-h(]h']h%]h&]h)]uh+K�h,hh-]rö(cdocutils.nodes list_item r÷)�rø}rù(hX Adding the toolchain to the PATHrúhjñhh¯h!U list_itemrûh#}rü(h%]h&]h']h(]h)]uh+Nh,hh-]rýhØ)�rþ}rÿ(hjúhjøhh¯h!hÛh#}r(h%]h&]h']h(]h)]uh+K�h-]rh/X Adding the toolchain to the PATHr…�r}r(hjúhjþubaubaubj÷)�r}r(hXSetting up CPATHrhjñhh¯h!jûh#}r(h%]h&]h']h(]h)]uh+Nh,hh-]r hØ)�r }r (hjhjhh¯h!hÛh#}r (h%]h&]h']h(]h)]uh+K�h-]r h/XSetting up CPATHr…�r}r(hjhj ubaubaubj÷)�r}r(hX Setting up PKG\_CONFIG\_\* pathsrhjñhh¯h!jûh#}r(h%]h&]h']h(]h)]uh+Nh,hh-]rhØ)�r}r(hjhjhh¯h!hÛh#}r(h%]h&]h']h(]h)]uh+K‘h-]rh/XSetting up PKG_CONFIG_* pathsr…�r}r(hX Setting up PKG\_CONFIG\_\* pathshjubaubaubj÷)�r}r(hXJSetting standard variable such as CC, CPP, AR to the cross-compile values hjñhh¯h!jûh#}r(h%]h&]h']h(]h)]uh+Nh,hh-]r hØ)�r!}r"(hXISetting standard variable such as CC, CPP, AR to the cross-compile valuesr#hjhh¯h!hÛh#}r$(h%]h&]h']h(]h)]uh+K’h-]r%h/XISetting standard variable such as CC, CPP, AR to the cross-compile valuesr&…�r'}r((hj#hj!ubaubaubeubhØ)�r)}r*(hXYTo **use** the environment-setup script you only need to source it. This is as simple as:hh­hh¯h!hÛh#}r+(h%]h&]h']h(]h)]uh+K•h,hh-]r,(h/XTo r-…�r.}r/(hXTo hj)ubj )�r0}r1(hX**use**h#}r2(h%]h&]h']h(]h)]uhj)h-]r3h/Xuser4…�r5}r6(hUhj0ubah!jubh/XO the environment-setup script you only need to source it. This is as simple as:r7…�r8}r9(hXO the environment-setup script you only need to source it. This is as simple as:hj)ubeubhØ)�r:}r;(hX1**host# source linux-devkit/environment-setup** |hh­hh¯h!hÛh#}r<(h%]h&]h']h(]h)]uh+K˜h,hh-]r=(j )�r>}r?(hX/**host# source linux-devkit/environment-setup**h#}r@(h%]h&]h']h(]h)]uhj:h-]rAh/X+host# source linux-devkit/environment-setuprB…�rC}rD(hUhj>ubah!jubh/X |rE…�rF}rG(hX |hj:ubeubhØ)�rH}rI(hX°To know if the environment setup script has been sourced in your current shell the shell prompt will be changed to contain the **[linux-devkit]:** prefix in the command prompt.hh­hh¯h!hÛh#}rJ(h%]h&]h']h(]h)]uh+K›h,hh-]rK(h/XTo know if the environment setup script has been sourced in your current shell the shell prompt will be changed to contain the rL…�rM}rN(hXTo know if the environment setup script has been sourced in your current shell the shell prompt will be changed to contain the hjHubj )�rO}rP(hX**[linux-devkit]:**h#}rQ(h%]h&]h']h(]h)]uhjHh-]rRh/X[linux-devkit]:rS…�rT}rU(hUhjOubah!jubh/X prefix in the command prompt.rV…�rW}rX(hX prefix in the command prompt.hjHubeubhØ)�rY}rZ(hXnThe `Usage <#usage>`__ section below will cover some cases where using the environment-setup script is useful.hh­hh¯h!hÛh#}r[(h%]h&]h']h(]h)]uh+KŸh,hh-]r\(h/XThe r]…�r^}r_(hXThe hjYubho)�r`}ra(hX`Usage <#usage>`__h#}rb(UnameXUsagehsX#usageh(]h']h%]h&]h)]uhjYh-]rch/XUsagerd…�re}rf(hUhj`ubah!hxubh/XX section below will cover some cases where using the environment-setup script is useful.rg…�rh}ri(hXX section below will cover some cases where using the environment-setup script is useful.hjYubeubhË)�rj}rk(hXWhen Compiling the Linux Kernelrlhh­hh¯h!hÏh#}rm(h(]rnUwhen-compiling-the-linux-kernelroah']h%]h&]h)]rphauh+Nh,hh-]rqh/XWhen Compiling the Linux Kernelrr…�rs}rt(hjlhjjubaubhØ)�ru}rv(hX•Because environment-setup changes standard variables such as CC you should not use this script when compiler projects that build host-side as well as target-side tools. A prime example of this is the Linux kernel, which builds some host side tools to help during the kernel build. If the environment-setup script has been sourced then the CC value will specify the cross-compiler for the host-side tool build. This means that the tools compiled and used during the kernel build will be compiled for the ARM platform while the kernel build tries to run these tools on an Intel platform. This will cause the tools to fail to run and the kernel to fail to compile.rwhh­hh¯h!hÛh#}rx(h%]h&]h']h(]h)]uh+K¥h,hh-]ryh/X•Because environment-setup changes standard variables such as CC you should not use this script when compiler projects that build host-side as well as target-side tools. A prime example of this is the Linux kernel, which builds some host side tools to help during the kernel build. If the environment-setup script has been sourced then the CC value will specify the cross-compiler for the host-side tool build. This means that the tools compiled and used during the kernel build will be compiled for the ARM platform while the kernel build tries to run these tools on an Intel platform. This will cause the tools to fail to run and the kernel to fail to compile.rz…�r{}r|(hjwhjuubaubhË)�r}}r~(hXUsagerhh­hh¯h!hÏh#}r€(h%]h&]h']h(]h)]uh+K±h,hh-]r�h/XUsager‚…�rƒ}r„(hjhj}ubaubhØ)�r…}r†(hXÏThe following sections give some examples of how to use the included toolchain to compile simple applications such as *HelloWorld* to more complex examples such as configuring and compiler GStreamer plugins.hh­hh¯h!hÛh#}r‡(h%]h&]h']h(]h)]uh+K²h,hh-]rˆ(h/XvThe following sections give some examples of how to use the included toolchain to compile simple applications such as r‰…�rŠ}r‹(hXvThe following sections give some examples of how to use the included toolchain to compile simple applications such as hj…ubcdocutils.nodes emphasis rŒ)�r�}rŽ(hX *HelloWorld*h#}r�(h%]h&]h']h(]h)]uhj…h-]r�h/X HelloWorldr‘…�r’}r“(hUhj�ubah!Uemphasisr”ubh/XM to more complex examples such as configuring and compiler GStreamer plugins.r•…�r–}r—(hXM to more complex examples such as configuring and compiler GStreamer plugins.hj…ubeubhË)�r˜}r™(hXSimple Cross-Compileršhh­hh¯h!hÏh#}r›(h(]rœUsimple-cross-compiler�ah']h%]h&]h)]ržhauh+Nh,hh-]rŸh/XSimple Cross-Compiler …�r¡}r¢(hjšhj˜ubaubhØ)�r£}r¤(hXIn the simplest case the cross-compiler can be used to compile simple applications that just need access to standard libraries. The two examples below cover an application that uses only the standard libgcc libraries and another example that uses the pthreads threading library.r¥hh­hh¯h!hÛh#}r¦(h%]h&]h']h(]h)]uh+K¹h,hh-]r§h/XIn the simplest case the cross-compiler can be used to compile simple applications that just need access to standard libraries. The two examples below cover an application that uses only the standard libgcc libraries and another example that uses the pthreads threading library.r¨…�r©}rª(hj¥hj£ubaubhË)�r«}r¬(hX HelloWorldr­hh­hh¯h!hÏh#}r®(h(]r¯U helloworldr°ah']h%]h&]h)]r±h auh+Nh,hh-]r²h/X HelloWorldr³…�r´}rµ(hj­hj«ubaubhØ)�r¶}r·(hX#Simple applications like **HelloWorld** can be compiled using just a call to the cross-compiler since the cross-compiler can find the libraries it was built with without any issues. The following steps will show how to make a simple helloworld application and cross-compile that application.hh­hh¯h!hÛh#}r¸(h%]h&]h']h(]h)]uh+KÁh,hh-]r¹(h/XSimple applications like rº…�r»}r¼(hXSimple applications like hj¶ubj )�r½}r¾(hX**HelloWorld**h#}r¿(h%]h&]h']h(]h)]uhj¶h-]rÀh/X HelloWorldrÁ…�rÂ}rÃ(hUhj½ubah!jubh/Xü can be compiled using just a call to the cross-compiler since the cross-compiler can find the libraries it was built with without any issues. The following steps will show how to make a simple helloworld application and cross-compile that application.rÄ…�rÅ}rÆ(hXü can be compiled using just a call to the cross-compiler since the cross-compiler can find the libraries it was built with without any issues. The following steps will show how to make a simple helloworld application and cross-compile that application.hj¶ubeubhØ)�rÇ}rÈ(hX Create a **helloworld.c** file |hh­hh¯h!hÛh#}rÉ(h%]h&]h']h(]h)]uh+KÇh,hh-]rÊ(h/X Create a rË…�rÌ}rÍ(hX Create a hjÇubj )�rÎ}rÏ(hX**helloworld.c**h#}rÐ(h%]h&]h']h(]h)]uhjÇh-]rÑh/X helloworld.crÒ…�rÓ}rÔ(hUhjÎubah!jubh/X file |rÕ…�rÖ}r×(hX file |hjÇubeubcdocutils.nodes literal_block rØ)�rÙ}rÚ(hX]#include int main() { printf ("Hello World from TI!!!\n"); return 0; }hh­hh¯h!U literal_blockrÛh#}rÜ(Ulinenosr݉UlanguagerÞXchÅhÆh(]h']h%]Uhighlight_argsrß}h&]h)]uh+KÊh,hh-]ràh/X]#include int main() { printf ("Hello World from TI!!!\n"); return 0; }rá…�râ}rã(hUhjÙubaubhØ)�rä}rå(hX¡Cross-compile the **helloworld.c** file using the cross-compile toolchain. In this example we will invoke the toolchain without it having been added to our PATH.hh­hh¯h!hÛh#}ræ(h%]h&]h']h(]h)]uh+KÓh,hh-]rç(h/XCross-compile the rè…�ré}rê(hXCross-compile the hjäubj )�rë}rì(hX**helloworld.c**h#}rí(h%]h&]h']h(]h)]uhjäh-]rîh/X helloworld.crï…�rð}rñ(hUhjëubah!jubh/X file using the cross-compile toolchain. In this example we will invoke the toolchain without it having been added to our PATH.rò…�ró}rô(hX file using the cross-compile toolchain. In this example we will invoke the toolchain without it having been added to our PATH.hjäubeubcdocutils.nodes line_block rõ)�rö}r÷(hUhh­hh¯h!U line_blockrøh#}rù(h%]h&]h']h(]h)]uh+K×h,hh-]rúcdocutils.nodes line rû)�rü}rý(hUUindentrþKhjöhh¯h!h+h#}rÿ(h%]h&]h']h(]h)]uh+Kh,hh-]ubaubhØ)�r}r(hX**host# /linux-devkit/sysroots/x86\_64-arago-linux/usr/bin/${TOOLCHAIN_PREFIX}gcc helloworld.c -o helloworld**hh­hh¯h!hÛh#}r(h%]h&]h']h(]h)]uh+KÙh,hh-]rj )�r}r(hX**host# /linux-devkit/sysroots/x86\_64-arago-linux/usr/bin/${TOOLCHAIN_PREFIX}gcc helloworld.c -o helloworld**h#}r(h%]h&]h']h(]h)]uhjh-]rh/Xzhost# /linux-devkit/sysroots/x86_64-arago-linux/usr/bin/${TOOLCHAIN_PREFIX}gcc helloworld.c -o helloworldr…�r }r (hUhjubah!jubaubjõ)�r }r (hUhh­hh¯h!jøh#}r (h%]h&]h']h(]h)]uh+KÝh,hh-]rjû)�r}r(hUjþKhj hh¯h!h+h#}r(h%]h&]h']h(]h)]uh+Kh,hh-]ubaubhØ)�r}r(hX¿After the above steps are run you should now have a **helloworld** executable in your directory that has been compiled for the ARM. A simple way to check this is to run the following command:hh­hh¯h!hÛh#}r(h%]h&]h']h(]h)]uh+Kßh,hh-]r(h/X4After the above steps are run you should now have a r…�r}r(hX4After the above steps are run you should now have a hjubj )�r}r(hX**helloworld**h#}r(h%]h&]h']h(]h)]uhjh-]rh/X helloworldr…�r}r(hUhjubah!jubh/X} executable in your directory that has been compiled for the ARM. A simple way to check this is to run the following command:r …�r!}r"(hX} executable in your directory that has been compiled for the ARM. A simple way to check this is to run the following command:hjubeubjõ)�r#}r$(hUhh­hh¯h!jøh#}r%(h%]h&]h']h(]h)]uh+Kãh,hh-]r&jû)�r'}r((hUjþKhj#hh¯h!h+h#}r)(h%]h&]h']h(]h)]uh+Kh,hh-]ubaubhØ)�r*}r+(hX**host# file helloworld**r,hh­hh¯h!hÛh#}r-(h%]h&]h']h(]h)]uh+Kåh,hh-]r.j )�r/}r0(hj,h#}r1(h%]h&]h']h(]h)]uhj*h-]r2h/Xhost# file helloworldr3…�r4}r5(hUhj/ubah!jubaubjõ)�r6}r7(hUhh­hh¯h!jøh#}r8(h%]h&]h']h(]h)]uh+Kçh,hh-]r9jû)�r:}r;(hUjþKhj6hh¯h!h+h#}r<(h%]h&]h']h(]h)]uh+Kh,hh-]ubaubhØ)�r=}r>(hXThis should yield output like:r?hh­hh¯h!hÛh#}r@(h%]h&]h']h(]h)]uh+Kéh,hh-]rAh/XThis should yield output like:rB…�rC}rD(hj?hj=ubaubjõ)�rE}rF(hUhh­hh¯h!jøh#}rG(h%]h&]h']h(]h)]uh+Këh,hh-]rHjû)�rI}rJ(hUjþKhjEhh¯h!h+h#}rK(h%]h&]h']h(]h)]uh+Kh,hh-]ubaubhØ)�rL}rM(hX�"helloworld: ELF 32-bit LSB executable, **ARM**, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, not stripped"hh­hh¯h!hÛh#}rN(h%]h&]h']h(]h)]uh+Kíh,hh-]rO(h/X("helloworld: ELF 32-bit LSB executable, rP…�rQ}rR(hX("helloworld: ELF 32-bit LSB executable, hjLubj )�rS}rT(hX**ARM**h#}rU(h%]h&]h']h(]h)]uhjLh-]rVh/XARMrW…�rX}rY(hUhjSubah!jubh/X^, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, not stripped"rZ…�r[}r\(hX^, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, not stripped"hjLubeubjõ)�r]}r^(hUhh­hh¯h!jøh#}r_(h%]h&]h']h(]h)]uh+Kñh,hh-]r`jû)�ra}rb(hUjþKhj]hh¯h!h+h#}rc(h%]h&]h']h(]h)]uh+Kh,hh-]ubaubcdocutils.nodes note rd)�re}rf(hX/The ARM entry above was made bold for emphasis.rghh­hh¯h!Unoterhh#}ri(h%]h&]h']h(]h)]uh+Nh,hh-]rjhØ)�rk}rl(hjghjehh¯h!hÛh#}rm(h%]h&]h']h(]h)]uh+Kôh-]rnh/X/The ARM entry above was made bold for emphasis.ro…�rp}rq(hjghjkubaubaubjõ)�rr}rs(hUhh­hh¯h!jøh#}rt(h%]h&]h']h(]h)]uh+Köh,hh-]rujû)�rv}rw(hUjþKhjrhh¯h!h+h#}rx(h%]h&]h']h(]h)]uh+Kh,hh-]ubaubhË)�ry}rz(hXUsing PThreadsr{hh­hh¯h!hÏh#}r|(h(]r}Uusing-pthreadsr~ah']h%]h&]h)]rh auh+Nh,hh-]r€h/XUsing PThreadsr�…�r‚}rƒ(hj{hjyubaubhØ)�r„}r…(hXôIn many cases your simple application probably wants to use additional libraries than the standard libgcc and glibc libraries. In this case you will need to include the header files for those libraries as well as add the library to the compile line. In this example we will look at how to build a simple threading application and use the pthread library. This example was derived from the example code at `**http://www.amparo.net/ce155/thread-ex.html** `__hh­hh¯h!hÛh#}r†(h%]h&]h']h(]h)]uh+Kûh,hh-]r‡(h/X•In many cases your simple application probably wants to use additional libraries than the standard libgcc and glibc libraries. In this case you will need to include the header files for those libraries as well as add the library to the compile line. In this example we will look at how to build a simple threading application and use the pthread library. This example was derived from the example code at rˆ…�r‰}rŠ(hX•In many cases your simple application probably wants to use additional libraries than the standard libgcc and glibc libraries. In this case you will need to include the header files for those libraries as well as add the library to the compile line. In this example we will look at how to build a simple threading application and use the pthread library. This example was derived from the example code at hj„ubho)�r‹}rŒ(hX_`**http://www.amparo.net/ce155/thread-ex.html** `__h#}r�(UnameX.**http://www.amparo.net/ce155/thread-ex.html**hsX*http://www.amparo.net/ce155/thread-ex.htmlh(]h']h%]h&]h)]uhj„h-]rŽh/X.**http://www.amparo.net/ce155/thread-ex.html**r�…�r�}r‘(hUhj‹ubah!hxubeubhØ)�r’}r“(hX9Create a file **thread-ex.c** with the following contentsr”hh­hh¯h!hÛh#}r•(h%]h&]h']h(]h)]uh+Mh,hh-]r–(h/XCreate a file r—…�r˜}r™(hXCreate a file hj’ubj )�rš}r›(hX**thread-ex.c**h#}rœ(h%]h&]h']h(]h)]uhj’h-]r�h/X thread-ex.crž…�rŸ}r (hUhjšubah!jubh/X with the following contentsr¡…�r¢}r£(hX with the following contentshj’ubeubjõ)�r¤}r¥(hUhh­hh¯h!jøh#}r¦(h%]h&]h']h(]h)]uh+Mh,hh-]r§jû)�r¨}r©(hUjþKhj¤hh¯h!h+h#}rª(h%]h&]h']h(]h)]uh+Kh,hh-]ubaubjØ)�r«}r¬(hXE#include ; #include ; #include ; #include ; #include ; #include ; #include ; int print_message_function(void *ptr); /* struct to hold data to be passed to a thread this shows how multiple data items can be passed to a thread */ typedef struct str_thdata { int thread_no; char message[100]; } thdata; int main(int argc, void **argv) { pthread_t thread1, thread2; thdata data1, data2; data1.thread_no = 1; strcpy(data1.message, "Hello!"); data2.thread_no = 2; strcpy(data2.message, "Hi!"); pthread_create (&thread1, NULL, (void *) &print_message_function, (void *) &data1); pthread_create (&thread2, NULL, (void *) &print_message_function, (void *) &data2); pthread_join(thread1, NULL); pthread_join(thread2, NULL); exit(0); } int print_message_function ( void *ptr ) { thdata *data; data = (thdata *) ptr; /* type cast to a pointer to thdata */ /* do the work */ printf("Thread %d says%s \n", data->thread_no, data->message); return 0; }hh­hh¯h!jÛh#}r­(hÅhÆh(]h']h%]h&]r®(Ucoder¯Xceh)]uh+M9h,hh-]r°(cdocutils.nodes inline r±)�r²}r³(hX#includeh#}r´(h%]h&]rµ(Ucommentr¶Upreprocr·eh']h(]h)]uhj«h-]r¸h/X#includer¹…�rº}r»(hUhj²ubah!Uinliner¼ubh/X …�r½}r¾(hX hj«ubj±)�r¿}rÀ(hX ;h#}rÁ(h%]h&]rÂ(UcommentrÃU preprocfilerÄeh']h(]h)]uhj«h-]rÅh/X ;rÆ…�rÇ}rÈ(hUhj¿ubah!j¼ubj±)�rÉ}rÊ(hX #includeh#}rË(h%]h&]rÌ(UcommentrÍUpreprocrÎeh']h(]h)]uhj«h-]rÏh/X #includerÐ…�rÑ}rÒ(hUhjÉubah!j¼ubh/X …�rÓ}rÔ(hX hj«ubj±)�rÕ}rÖ(hX;h#}r×(h%]h&]rØ(UcommentrÙU preprocfilerÚeh']h(]h)]uhj«h-]rÛh/X;rÜ…�rÝ}rÞ(hUhjÕubah!j¼ubj±)�rß}rà(hX #includeh#}rá(h%]h&]râ(UcommentrãUpreprocräeh']h(]h)]uhj«h-]råh/X #includeræ…�rç}rè(hUhjßubah!j¼ubh/X …�ré}rê(hX hj«ubj±)�rë}rì(hX ;h#}rí(h%]h&]rî(UcommentrïU preprocfilerðeh']h(]h)]uhj«h-]rñh/X ;rò…�ró}rô(hUhjëubah!j¼ubj±)�rõ}rö(hX #includeh#}r÷(h%]h&]rø(UcommentrùUpreprocrúeh']h(]h)]uhj«h-]rûh/X #includerü…�rý}rþ(hUhjõubah!j¼ubh/X …�rÿ}r(hX hj«ubj±)�r}r(hX ;h#}r(h%]h&]r(UcommentrU preprocfilereh']h(]h)]uhj«h-]rh/X ;r…�r }r (hUhjubah!j¼ubj±)�r }r (hX #includeh#}r (h%]h&]r(UcommentrUpreprocreh']h(]h)]uhj«h-]rh/X #includer…�r}r(hUhj ubah!j¼ubh/X …�r}r(hX hj«ubj±)�r}r(hX ;h#}r(h%]h&]r(UcommentrU preprocfilereh']h(]h)]uhj«h-]rh/X ;r…�r}r (hUhjubah!j¼ubj±)�r!}r"(hX #includeh#}r#(h%]h&]r$(Ucommentr%Upreprocr&eh']h(]h)]uhj«h-]r'h/X #includer(…�r)}r*(hUhj!ubah!j¼ubh/X …�r+}r,(hX hj«ubj±)�r-}r.(hX ;h#}r/(h%]h&]r0(Ucommentr1U preprocfiler2eh']h(]h)]uhj«h-]r3h/X ;r4…�r5}r6(hUhj-ubah!j¼ubj±)�r7}r8(hX #includeh#}r9(h%]h&]r:(Ucommentr;Upreprocr<eh']h(]h)]uhj«h-]r=h/X #includer>…�r?}r@(hUhj7ubah!j¼ubh/X …�rA}rB(hX hj«ubj±)�rC}rD(hX ;h#}rE(h%]h&]rF(UcommentrGU preprocfilerHeh']h(]h)]uhj«h-]rIh/X ;rJ…�rK}rL(hUhjCubah!j¼ubj±)�rM}rN(hX h#}rO(h%]h&]rP(UcommentrQUpreprocrReh']h(]h)]uhj«h-]rSh/X …�rT}rU(hUhjMubah!j¼ubh/X …�rV}rW(hX hj«ubj±)�rX}rY(hXinth#}rZ(h%]h&]r[(Ukeywordr\Utyper]eh']h(]h)]uhj«h-]r^h/Xintr_…�r`}ra(hUhjXubah!j¼ubh/X …�rb}rc(hX hj«ubj±)�rd}re(hXprint_message_functionh#}rf(h%]h&]rg(UnamerhUfunctionrieh']h(]h)]uhj«h-]rjh/Xprint_message_functionrk…�rl}rm(hUhjdubah!j¼ubj±)�rn}ro(hX(h#}rp(h%]h&]rqU punctuationrrah']h(]h)]uhj«h-]rsh/X(…�rt}ru(hUhjnubah!j¼ubj±)�rv}rw(hXvoidh#}rx(h%]h&]ry(UkeywordrzUtyper{eh']h(]h)]uhj«h-]r|h/Xvoidr}…�r~}r(hUhjvubah!j¼ubh/X …�r€}r�(hX hj«ubj±)�r‚}rƒ(hX*h#}r„(h%]h&]r…Uoperatorr†ah']h(]h)]uhj«h-]r‡h/X*…�rˆ}r‰(hUhj‚ubah!j¼ubj±)�rŠ}r‹(hXptrh#}rŒ(h%]h&]r�UnamerŽah']h(]h)]uhj«h-]r�h/Xptrr�…�r‘}r’(hUhjŠubah!j¼ubj±)�r“}r”(hX);h#}r•(h%]h&]r–U punctuationr—ah']h(]h)]uhj«h-]r˜h/X);r™…�rš}r›(hUhj“ubah!j¼ubh/X rœ…�r�}rž(hX hj«ubj±)�rŸ}r (hXo/* struct to hold data to be passed to a thread this shows how multiple data items can be passed to a thread */h#}r¡(h%]h&]r¢(Ucommentr£U multiliner¤eh']h(]h)]uhj«h-]r¥h/Xo/* struct to hold data to be passed to a thread this shows how multiple data items can be passed to a thread */r¦…�r§}r¨(hUhjŸubah!j¼ubh/X …�r©}rª(hX hj«ubj±)�r«}r¬(hXtypedefh#}r­(h%]h&]r®Ukeywordr¯ah']h(]h)]uhj«h-]r°h/Xtypedefr±…�r²}r³(hUhj«ubah!j¼ubh/X …�r´}rµ(hX hj«ubj±)�r¶}r·(hXstructh#}r¸(h%]h&]r¹Ukeywordrºah']h(]h)]uhj«h-]r»h/Xstructr¼…�r½}r¾(hUhj¶ubah!j¼ubh/X …�r¿}rÀ(hX hj«ubj±)�rÁ}rÂ(hX str_thdatah#}rÃ(h%]h&]rÄUnamerÅah']h(]h)]uhj«h-]rÆh/X str_thdatarÇ…�rÈ}rÉ(hUhjÁubah!j¼ubh/X …�rÊ}rË(hX hj«ubj±)�rÌ}rÍ(hX{h#}rÎ(h%]h&]rÏU punctuationrÐah']h(]h)]uhj«h-]rÑh/X{…�rÒ}rÓ(hUhjÌubah!j¼ubh/X rÔ…�rÕ}rÖ(hX hj«ubj±)�r×}rØ(hXinth#}rÙ(h%]h&]rÚ(UkeywordrÛUtyperÜeh']h(]h)]uhj«h-]rÝh/XintrÞ…�rß}rà(hUhj×ubah!j¼ubh/X …�rá}râ(hX hj«ubj±)�rã}rä(hX thread_noh#}rå(h%]h&]ræUnamerçah']h(]h)]uhj«h-]rèh/X thread_noré…�rê}rë(hUhjãubah!j¼ubj±)�rì}rí(hX;h#}rî(h%]h&]rïU punctuationrðah']h(]h)]uhj«h-]rñh/X;…�rò}ró(hUhjìubah!j¼ubh/X rô…�rõ}rö(hX hj«ubj±)�r÷}rø(hXcharh#}rù(h%]h&]rú(UkeywordrûUtyperüeh']h(]h)]uhj«h-]rýh/Xcharrþ…�rÿ}r(hUhj÷ubah!j¼ubh/X …�r}r(hX hj«ubj±)�r}r(hXmessageh#}r(h%]h&]rUnamerah']h(]h)]uhj«h-]rh/Xmessager …�r }r (hUhjubah!j¼ubj±)�r }r (hX[h#}r(h%]h&]rU punctuationrah']h(]h)]uhj«h-]rh/X[…�r}r(hUhj ubah!j¼ubj±)�r}r(hX100h#}r(h%]h&]r(UliteralrUnumberrUintegerreh']h(]h)]uhj«h-]rh/X100r…�r}r(hUhjubah!j¼ubj±)�r}r (hX];h#}r!(h%]h&]r"U punctuationr#ah']h(]h)]uhj«h-]r$h/X];r%…�r&}r'(hUhjubah!j¼ubh/X …�r(}r)(hX hj«ubj±)�r*}r+(hX}h#}r,(h%]h&]r-U punctuationr.ah']h(]h)]uhj«h-]r/h/X}…�r0}r1(hUhj*ubah!j¼ubh/X …�r2}r3(hX hj«ubj±)�r4}r5(hXthdatah#}r6(h%]h&]r7Unamer8ah']h(]h)]uhj«h-]r9h/Xthdatar:…�r;}r<(hUhj4ubah!j¼ubj±)�r=}r>(hX;h#}r?(h%]h&]r@U punctuationrAah']h(]h)]uhj«h-]rBh/X;…�rC}rD(hUhj=ubah!j¼ubh/X rE…�rF}rG(hX hj«ubj±)�rH}rI(hXinth#}rJ(h%]h&]rK(UkeywordrLUtyperMeh']h(]h)]uhj«h-]rNh/XintrO…�rP}rQ(hUhjHubah!j¼ubh/X …�rR}rS(hX hj«ubj±)�rT}rU(hXmainh#}rV(h%]h&]rW(UnamerXUfunctionrYeh']h(]h)]uhj«h-]rZh/Xmainr[…�r\}r](hUhjTubah!j¼ubj±)�r^}r_(hX(h#}r`(h%]h&]raU punctuationrbah']h(]h)]uhj«h-]rch/X(…�rd}re(hUhj^ubah!j¼ubj±)�rf}rg(hXinth#}rh(h%]h&]ri(UkeywordrjUtyperkeh']h(]h)]uhj«h-]rlh/Xintrm…�rn}ro(hUhjfubah!j¼ubh/X …�rp}rq(hX hj«ubj±)�rr}rs(hXargch#}rt(h%]h&]ruUnamervah']h(]h)]uhj«h-]rwh/Xargcrx…�ry}rz(hUhjrubah!j¼ubj±)�r{}r|(hX,h#}r}(h%]h&]r~U punctuationrah']h(]h)]uhj«h-]r€h/X,…�r�}r‚(hUhj{ubah!j¼ubh/X …�rƒ}r„(hX hj«ubj±)�r…}r†(hXvoidh#}r‡(h%]h&]rˆ(Ukeywordr‰UtyperŠeh']h(]h)]uhj«h-]r‹h/XvoidrŒ…�r�}rŽ(hUhj…ubah!j¼ubh/X …�r�}r�(hX hj«ubj±)�r‘}r’(hX**h#}r“(h%]h&]r”Uoperatorr•ah']h(]h)]uhj«h-]r–h/X**r—…�r˜}r™(hUhj‘ubah!j¼ubj±)�rš}r›(hXargvh#}rœ(h%]h&]r�Unameržah']h(]h)]uhj«h-]rŸh/Xargvr …�r¡}r¢(hUhjšubah!j¼ubj±)�r£}r¤(hX)h#}r¥(h%]h&]r¦U punctuationr§ah']h(]h)]uhj«h-]r¨h/X)…�r©}rª(hUhj£ubah!j¼ubh/X …�r«}r¬(hX hj«ubj±)�r­}r®(hX{h#}r¯(h%]h&]r°U punctuationr±ah']h(]h)]uhj«h-]r²h/X{…�r³}r´(hUhj­ubah!j¼ubh/X rµ…�r¶}r·(hX hj«ubj±)�r¸}r¹(hX pthread_th#}rº(h%]h&]r»Unamer¼ah']h(]h)]uhj«h-]r½h/X pthread_tr¾…�r¿}rÀ(hUhj¸ubah!j¼ubh/X …�rÁ}rÂ(hX hj«ubj±)�rÃ}rÄ(hXthread1h#}rÅ(h%]h&]rÆUnamerÇah']h(]h)]uhj«h-]rÈh/Xthread1rÉ…�rÊ}rË(hUhjÃubah!j¼ubj±)�rÌ}rÍ(hX,h#}rÎ(h%]h&]rÏU punctuationrÐah']h(]h)]uhj«h-]rÑh/X,…�rÒ}rÓ(hUhjÌubah!j¼ubh/X …�rÔ}rÕ(hX hj«ubj±)�rÖ}r×(hXthread2h#}rØ(h%]h&]rÙUnamerÚah']h(]h)]uhj«h-]rÛh/Xthread2rÜ…�rÝ}rÞ(hUhjÖubah!j¼ubj±)�rß}rà(hX;h#}rá(h%]h&]râU punctuationrãah']h(]h)]uhj«h-]räh/X;…�rå}ræ(hUhjßubah!j¼ubh/X rç…�rè}ré(hX hj«ubj±)�rê}rë(hXthdatah#}rì(h%]h&]ríUnamerîah']h(]h)]uhj«h-]rïh/Xthdatarð…�rñ}rò(hUhjêubah!j¼ubh/X …�ró}rô(hX hj«ubj±)�rõ}rö(hXdata1h#}r÷(h%]h&]røUnamerùah']h(]h)]uhj«h-]rúh/Xdata1rû…�rü}rý(hUhjõubah!j¼ubj±)�rþ}rÿ(hX,h#}r(h%]h&]rU punctuationrah']h(]h)]uhj«h-]rh/X,…�r}r(hUhjþubah!j¼ubh/X …�r}r(hX hj«ubj±)�r}r (hXdata2h#}r (h%]h&]r Unamer ah']h(]h)]uhj«h-]r h/Xdata2r…�r}r(hUhjubah!j¼ubj±)�r}r(hX;h#}r(h%]h&]rU punctuationrah']h(]h)]uhj«h-]rh/X;…�r}r(hUhjubah!j¼ubh/X r…�r}r(hX hj«ubj±)�r}r(hXdata1h#}r(h%]h&]rUnamer ah']h(]h)]uhj«h-]r!h/Xdata1r"…�r#}r$(hUhjubah!j¼ubj±)�r%}r&(hX.h#}r'(h%]h&]r(U punctuationr)ah']h(]h)]uhj«h-]r*h/X.…�r+}r,(hUhj%ubah!j¼ubj±)�r-}r.(hX thread_noh#}r/(h%]h&]r0Unamer1ah']h(]h)]uhj«h-]r2h/X thread_nor3…�r4}r5(hUhj-ubah!j¼ubh/X …�r6}r7(hX hj«ubj±)�r8}r9(hX=h#}r:(h%]h&]r;Uoperatorr<ah']h(]h)]uhj«h-]r=h/X=…�r>}r?(hUhj8ubah!j¼ubh/X …�r@}rA(hX hj«ubj±)�rB}rC(hX1h#}rD(h%]h&]rE(UliteralrFUnumberrGUintegerrHeh']h(]h)]uhj«h-]rIh/X1…�rJ}rK(hUhjBubah!j¼ubj±)�rL}rM(hX;h#}rN(h%]h&]rOU punctuationrPah']h(]h)]uhj«h-]rQh/X;…�rR}rS(hUhjLubah!j¼ubh/X rT…�rU}rV(hX hj«ubj±)�rW}rX(hXstrcpyh#}rY(h%]h&]rZUnamer[ah']h(]h)]uhj«h-]r\h/Xstrcpyr]…�r^}r_(hUhjWubah!j¼ubj±)�r`}ra(hX(h#}rb(h%]h&]rcU punctuationrdah']h(]h)]uhj«h-]reh/X(…�rf}rg(hUhj`ubah!j¼ubj±)�rh}ri(hXdata1h#}rj(h%]h&]rkUnamerlah']h(]h)]uhj«h-]rmh/Xdata1rn…�ro}rp(hUhjhubah!j¼ubj±)�rq}rr(hX.h#}rs(h%]h&]rtU punctuationruah']h(]h)]uhj«h-]rvh/X.…�rw}rx(hUhjqubah!j¼ubj±)�ry}rz(hXmessageh#}r{(h%]h&]r|Unamer}ah']h(]h)]uhj«h-]r~h/Xmessager…�r€}r�(hUhjyubah!j¼ubj±)�r‚}rƒ(hX,h#}r„(h%]h&]r…U punctuationr†ah']h(]h)]uhj«h-]r‡h/X,…�rˆ}r‰(hUhj‚ubah!j¼ubh/X …�rŠ}r‹(hX hj«ubj±)�rŒ}r�(hX"Hello!"h#}rŽ(h%]h&]r�(Uliteralr�Ustringr‘eh']h(]h)]uhj«h-]r’h/X"Hello!"r“…�r”}r•(hUhjŒubah!j¼ubj±)�r–}r—(hX);h#}r˜(h%]h&]r™U punctuationršah']h(]h)]uhj«h-]r›h/X);rœ…�r�}rž(hUhj–ubah!j¼ubh/X rŸ…�r }r¡(hX hj«ubj±)�r¢}r£(hXdata2h#}r¤(h%]h&]r¥Unamer¦ah']h(]h)]uhj«h-]r§h/Xdata2r¨…�r©}rª(hUhj¢ubah!j¼ubj±)�r«}r¬(hX.h#}r­(h%]h&]r®U punctuationr¯ah']h(]h)]uhj«h-]r°h/X.…�r±}r²(hUhj«ubah!j¼ubj±)�r³}r´(hX thread_noh#}rµ(h%]h&]r¶Unamer·ah']h(]h)]uhj«h-]r¸h/X thread_nor¹…�rº}r»(hUhj³ubah!j¼ubh/X …�r¼}r½(hX hj«ubj±)�r¾}r¿(hX=h#}rÀ(h%]h&]rÁUoperatorrÂah']h(]h)]uhj«h-]rÃh/X=…�rÄ}rÅ(hUhj¾ubah!j¼ubh/X …�rÆ}rÇ(hX hj«ubj±)�rÈ}rÉ(hX2h#}rÊ(h%]h&]rË(UliteralrÌUnumberrÍUintegerrÎeh']h(]h)]uhj«h-]rÏh/X2…�rÐ}rÑ(hUhjÈubah!j¼ubj±)�rÒ}rÓ(hX;h#}rÔ(h%]h&]rÕU punctuationrÖah']h(]h)]uhj«h-]r×h/X;…�rØ}rÙ(hUhjÒubah!j¼ubh/X rÚ…�rÛ}rÜ(hX hj«ubj±)�rÝ}rÞ(hXstrcpyh#}rß(h%]h&]ràUnameráah']h(]h)]uhj«h-]râh/Xstrcpyrã…�rä}rå(hUhjÝubah!j¼ubj±)�ræ}rç(hX(h#}rè(h%]h&]réU punctuationrêah']h(]h)]uhj«h-]rëh/X(…�rì}rí(hUhjæubah!j¼ubj±)�rî}rï(hXdata2h#}rð(h%]h&]rñUnameròah']h(]h)]uhj«h-]róh/Xdata2rô…�rõ}rö(hUhjîubah!j¼ubj±)�r÷}rø(hX.h#}rù(h%]h&]rúU punctuationrûah']h(]h)]uhj«h-]rüh/X.…�rý}rþ(hUhj÷ubah!j¼ubj±)�rÿ}r (hXmessageh#}r (h%]h&]r Unamer ah']h(]h)]uhj«h-]r h/Xmessager …�r }r (hUhjÿubah!j¼ubj±)�r }r (hX,h#}r (h%]h&]r U punctuationr ah']h(]h)]uhj«h-]r h/X,…�r }r (hUhj ubah!j¼ubh/X …�r }r (hX hj«ubj±)�r }r (hX"Hi!"h#}r (h%]h&]r (Uliteralr Ustringr eh']h(]h)]uhj«h-]r h/X"Hi!"r …�r }r (hUhj ubah!j¼ubj±)�r }r (hX);h#}r (h%]h&]r U punctuationr ah']h(]h)]uhj«h-]r! h/X);r" …�r# }r$ (hUhj ubah!j¼ubh/X r% …�r& }r' (hX hj«ubj±)�r( }r) (hXpthread_createh#}r* (h%]h&]r+ Unamer, ah']h(]h)]uhj«h-]r- h/Xpthread_creater. …�r/ }r0 (hUhj( ubah!j¼ubh/X …�r1 }r2 (hX hj«ubj±)�r3 }r4 (hX(h#}r5 (h%]h&]r6 U punctuationr7 ah']h(]h)]uhj«h-]r8 h/X(…�r9 }r: (hUhj3 ubah!j¼ubj±)�r; }r< (hX&h#}r= (h%]h&]r> Uoperatorr? ah']h(]h)]uhj«h-]r@ h/X&…�rA }rB (hUhj; ubah!j¼ubj±)�rC }rD (hXthread1h#}rE (h%]h&]rF UnamerG ah']h(]h)]uhj«h-]rH h/Xthread1rI …�rJ }rK (hUhjC ubah!j¼ubj±)�rL }rM (hX,h#}rN (h%]h&]rO U punctuationrP ah']h(]h)]uhj«h-]rQ h/X,…�rR }rS (hUhjL ubah!j¼ubh/X …�rT }rU (hX hj«ubj±)�rV }rW (hXNULLh#}rX (h%]h&]rY (UnamerZ Ubuiltinr[ eh']h(]h)]uhj«h-]r\ h/XNULLr] …�r^ }r_ (hUhjV ubah!j¼ubj±)�r` }ra (hX,h#}rb (h%]h&]rc U punctuationrd ah']h(]h)]uhj«h-]re h/X,…�rf }rg (hUhj` ubah!j¼ubh/X …�rh }ri (hX hj«ubj±)�rj }rk (hX(h#}rl (h%]h&]rm U punctuationrn ah']h(]h)]uhj«h-]ro h/X(…�rp }rq (hUhjj ubah!j¼ubj±)�rr }rs (hXvoidh#}rt (h%]h&]ru (Ukeywordrv Utyperw eh']h(]h)]uhj«h-]rx h/Xvoidry …�rz }r{ (hUhjr ubah!j¼ubh/X …�r| }r} (hX hj«ubj±)�r~ }r (hX*h#}r€ (h%]h&]r� Uoperatorr‚ ah']h(]h)]uhj«h-]rƒ h/X*…�r„ }r… (hUhj~ ubah!j¼ubj±)�r† }r‡ (hX)h#}rˆ (h%]h&]r‰ U punctuationrŠ ah']h(]h)]uhj«h-]r‹ h/X)…�rŒ }r� (hUhj† ubah!j¼ubh/X …�rŽ }r� (hX hj«ubj±)�r� }r‘ (hX&h#}r’ (h%]h&]r“ Uoperatorr” ah']h(]h)]uhj«h-]r• h/X&…�r– }r— (hUhj� ubah!j¼ubj±)�r˜ }r™ (hXprint_message_functionh#}rš (h%]h&]r› Unamerœ ah']h(]h)]uhj«h-]r� h/Xprint_message_functionrž …�rŸ }r  (hUhj˜ ubah!j¼ubj±)�r¡ }r¢ (hX,h#}r£ (h%]h&]r¤ U punctuationr¥ ah']h(]h)]uhj«h-]r¦ h/X,…�r§ }r¨ (hUhj¡ ubah!j¼ubh/X …�r© }rª (hX hj«ubj±)�r« }r¬ (hX(h#}r­ (h%]h&]r® U punctuationr¯ ah']h(]h)]uhj«h-]r° h/X(…�r± }r² (hUhj« ubah!j¼ubj±)�r³ }r´ (hXvoidh#}rµ (h%]h&]r¶ (Ukeywordr· Utyper¸ eh']h(]h)]uhj«h-]r¹ h/Xvoidrº …�r» }r¼ (hUhj³ ubah!j¼ubh/X …�r½ }r¾ (hX hj«ubj±)�r¿ }rÀ (hX*h#}rÁ (h%]h&]r Uoperatorrà ah']h(]h)]uhj«h-]rÄ h/X*…�rÅ }rÆ (hUhj¿ ubah!j¼ubj±)�rÇ }rÈ (hX)h#}rÉ (h%]h&]rÊ U punctuationrË ah']h(]h)]uhj«h-]rÌ h/X)…�rÍ }rÎ (hUhjÇ ubah!j¼ubh/X …�rÏ }rÐ (hX hj«ubj±)�rÑ }rÒ (hX&h#}rÓ (h%]h&]rÔ UoperatorrÕ ah']h(]h)]uhj«h-]rÖ h/X&…�r× }rØ (hUhjÑ ubah!j¼ubj±)�rÙ }rÚ (hXdata1h#}rÛ (h%]h&]rÜ UnamerÝ ah']h(]h)]uhj«h-]rÞ h/Xdata1rß …�rà }rá (hUhjÙ ubah!j¼ubj±)�râ }rã (hX);h#}rä (h%]h&]rå U punctuationræ ah']h(]h)]uhj«h-]rç h/X);rè …�ré }rê (hUhjâ ubah!j¼ubh/X rë …�rì }rí (hX hj«ubj±)�rî }rï (hXpthread_createh#}rð (h%]h&]rñ Unamerò ah']h(]h)]uhj«h-]ró h/Xpthread_createrô …�rõ }rö (hUhjî ubah!j¼ubh/X …�r÷ }rø (hX hj«ubj±)�rù }rú (hX(h#}rû (h%]h&]rü U punctuationrý ah']h(]h)]uhj«h-]rþ h/X(…�rÿ }r (hUhjù ubah!j¼ubj±)�r }r (hX&h#}r (h%]h&]r Uoperatorr ah']h(]h)]uhj«h-]r h/X&…�r }r (hUhj ubah!j¼ubj±)�r }r (hXthread2h#}r (h%]h&]r Unamer ah']h(]h)]uhj«h-]r h/Xthread2r …�r }r (hUhj ubah!j¼ubj±)�r }r (hX,h#}r (h%]h&]r U punctuationr ah']h(]h)]uhj«h-]r h/X,…�r }r (hUhj ubah!j¼ubh/X …�r }r (hX hj«ubj±)�r }r (hXNULLh#}r (h%]h&]r (Unamer Ubuiltinr! eh']h(]h)]uhj«h-]r" h/XNULLr# …�r$ }r% (hUhj ubah!j¼ubj±)�r& }r' (hX,h#}r( (h%]h&]r) U punctuationr* ah']h(]h)]uhj«h-]r+ h/X,…�r, }r- (hUhj& ubah!j¼ubh/X …�r. }r/ (hX hj«ubj±)�r0 }r1 (hX(h#}r2 (h%]h&]r3 U punctuationr4 ah']h(]h)]uhj«h-]r5 h/X(…�r6 }r7 (hUhj0 ubah!j¼ubj±)�r8 }r9 (hXvoidh#}r: (h%]h&]r; (Ukeywordr< Utyper= eh']h(]h)]uhj«h-]r> h/Xvoidr? …�r@ }rA (hUhj8 ubah!j¼ubh/X …�rB }rC (hX hj«ubj±)�rD }rE (hX*h#}rF (h%]h&]rG UoperatorrH ah']h(]h)]uhj«h-]rI h/X*…�rJ }rK (hUhjD ubah!j¼ubj±)�rL }rM (hX)h#}rN (h%]h&]rO U punctuationrP ah']h(]h)]uhj«h-]rQ h/X)…�rR }rS (hUhjL ubah!j¼ubh/X …�rT }rU (hX hj«ubj±)�rV }rW (hX&h#}rX (h%]h&]rY UoperatorrZ ah']h(]h)]uhj«h-]r[ h/X&…�r\ }r] (hUhjV ubah!j¼ubj±)�r^ }r_ (hXprint_message_functionh#}r` (h%]h&]ra Unamerb ah']h(]h)]uhj«h-]rc h/Xprint_message_functionrd …�re }rf (hUhj^ ubah!j¼ubj±)�rg }rh (hX,h#}ri (h%]h&]rj U punctuationrk ah']h(]h)]uhj«h-]rl h/X,…�rm }rn (hUhjg ubah!j¼ubh/X …�ro }rp (hX hj«ubj±)�rq }rr (hX(h#}rs (h%]h&]rt U punctuationru ah']h(]h)]uhj«h-]rv h/X(…�rw }rx (hUhjq ubah!j¼ubj±)�ry }rz (hXvoidh#}r{ (h%]h&]r| (Ukeywordr} Utyper~ eh']h(]h)]uhj«h-]r h/Xvoidr€ …�r� }r‚ (hUhjy ubah!j¼ubh/X …�rƒ }r„ (hX hj«ubj±)�r… }r† (hX*h#}r‡ (h%]h&]rˆ Uoperatorr‰ ah']h(]h)]uhj«h-]rŠ h/X*…�r‹ }rŒ (hUhj… ubah!j¼ubj±)�r� }rŽ (hX)h#}r� (h%]h&]r� U punctuationr‘ ah']h(]h)]uhj«h-]r’ h/X)…�r“ }r” (hUhj� ubah!j¼ubh/X …�r• }r– (hX hj«ubj±)�r— }r˜ (hX&h#}r™ (h%]h&]rš Uoperatorr› ah']h(]h)]uhj«h-]rœ h/X&…�r� }rž (hUhj— ubah!j¼ubj±)�rŸ }r  (hXdata2h#}r¡ (h%]h&]r¢ Unamer£ ah']h(]h)]uhj«h-]r¤ h/Xdata2r¥ …�r¦ }r§ (hUhjŸ ubah!j¼ubj±)�r¨ }r© (hX);h#}rª (h%]h&]r« U punctuationr¬ ah']h(]h)]uhj«h-]r­ h/X);r® …�r¯ }r° (hUhj¨ ubah!j¼ubh/X r± …�r² }r³ (hX hj«ubj±)�r´ }rµ (hX pthread_joinh#}r¶ (h%]h&]r· Unamer¸ ah']h(]h)]uhj«h-]r¹ h/X pthread_joinrº …�r» }r¼ (hUhj´ ubah!j¼ubj±)�r½ }r¾ (hX(h#}r¿ (h%]h&]rÀ U punctuationrÁ ah']h(]h)]uhj«h-]r h/X(…�rà }rÄ (hUhj½ ubah!j¼ubj±)�rÅ }rÆ (hXthread1h#}rÇ (h%]h&]rÈ UnamerÉ ah']h(]h)]uhj«h-]rÊ h/Xthread1rË …�rÌ }rÍ (hUhjÅ ubah!j¼ubj±)�rÎ }rÏ (hX,h#}rÐ (h%]h&]rÑ U punctuationrÒ ah']h(]h)]uhj«h-]rÓ h/X,…�rÔ }rÕ (hUhjÎ ubah!j¼ubh/X …�rÖ }r× (hX hj«ubj±)�rØ }rÙ (hXNULLh#}rÚ (h%]h&]rÛ (UnamerÜ UbuiltinrÝ eh']h(]h)]uhj«h-]rÞ h/XNULLrß …�rà }rá (hUhjØ ubah!j¼ubj±)�râ }rã (hX);h#}rä (h%]h&]rå U punctuationræ ah']h(]h)]uhj«h-]rç h/X);rè …�ré }rê (hUhjâ ubah!j¼ubh/X rë …�rì }rí (hX hj«ubj±)�rî }rï (hX pthread_joinh#}rð (h%]h&]rñ Unamerò ah']h(]h)]uhj«h-]ró h/X pthread_joinrô …�rõ }rö (hUhjî ubah!j¼ubj±)�r÷ }rø (hX(h#}rù (h%]h&]rú U punctuationrû ah']h(]h)]uhj«h-]rü h/X(…�rý }rþ (hUhj÷ ubah!j¼ubj±)�rÿ }r (hXthread2h#}r (h%]h&]r Unamer ah']h(]h)]uhj«h-]r h/Xthread2r …�r }r (hUhjÿ ubah!j¼ubj±)�r }r (hX,h#}r (h%]h&]r U punctuationr ah']h(]h)]uhj«h-]r h/X,…�r }r (hUhj ubah!j¼ubh/X …�r }r (hX hj«ubj±)�r }r (hXNULLh#}r (h%]h&]r (Unamer Ubuiltinr eh']h(]h)]uhj«h-]r h/XNULLr …�r }r (hUhj ubah!j¼ubj±)�r }r (hX);h#}r (h%]h&]r U punctuationr ah']h(]h)]uhj«h-]r! h/X);r" …�r# }r$ (hUhj ubah!j¼ubh/X r% …�r& }r' (hX hj«ubj±)�r( }r) (hXexith#}r* (h%]h&]r+ Unamer, ah']h(]h)]uhj«h-]r- h/Xexitr. …�r/ }r0 (hUhj( ubah!j¼ubj±)�r1 }r2 (hX(h#}r3 (h%]h&]r4 U punctuationr5 ah']h(]h)]uhj«h-]r6 h/X(…�r7 }r8 (hUhj1 ubah!j¼ubj±)�r9 }r: (hX0h#}r; (h%]h&]r< (Uliteralr= Unumberr> Uintegerr? eh']h(]h)]uhj«h-]r@ h/X0…�rA }rB (hUhj9 ubah!j¼ubj±)�rC }rD (hX);h#}rE (h%]h&]rF U punctuationrG ah']h(]h)]uhj«h-]rH h/X);rI …�rJ }rK (hUhjC ubah!j¼ubh/X …�rL }rM (hX hj«ubj±)�rN }rO (hX}h#}rP (h%]h&]rQ U punctuationrR ah']h(]h)]uhj«h-]rS h/X}…�rT }rU (hUhjN ubah!j¼ubh/X rV …�rW }rX (hX hj«ubj±)�rY }rZ (hXinth#}r[ (h%]h&]r\ (Ukeywordr] Utyper^ eh']h(]h)]uhj«h-]r_ h/Xintr` …�ra }rb (hUhjY ubah!j¼ubh/X …�rc }rd (hX hj«ubj±)�re }rf (hXprint_message_functionh#}rg (h%]h&]rh (Unameri Ufunctionrj eh']h(]h)]uhj«h-]rk h/Xprint_message_functionrl …�rm }rn (hUhje ubah!j¼ubh/X …�ro }rp (hX hj«ubj±)�rq }rr (hX(h#}rs (h%]h&]rt U punctuationru ah']h(]h)]uhj«h-]rv h/X(…�rw }rx (hUhjq ubah!j¼ubh/X …�ry }rz (hX hj«ubj±)�r{ }r| (hXvoidh#}r} (h%]h&]r~ (Ukeywordr Utyper€ eh']h(]h)]uhj«h-]r� h/Xvoidr‚ …�rƒ }r„ (hUhj{ ubah!j¼ubh/X …�r… }r† (hX hj«ubj±)�r‡ }rˆ (hX*h#}r‰ (h%]h&]rŠ Uoperatorr‹ ah']h(]h)]uhj«h-]rŒ h/X*…�r� }rŽ (hUhj‡ ubah!j¼ubj±)�r� }r� (hXptrh#}r‘ (h%]h&]r’ Unamer“ ah']h(]h)]uhj«h-]r” h/Xptrr• …�r– }r— (hUhj� ubah!j¼ubh/X …�r˜ }r™ (hX hj«ubj±)�rš }r› (hX)h#}rœ (h%]h&]r� U punctuationrž ah']h(]h)]uhj«h-]rŸ h/X)…�r  }r¡ (hUhjš ubah!j¼ubh/X …�r¢ }r£ (hX hj«ubj±)�r¤ }r¥ (hX{h#}r¦ (h%]h&]r§ U punctuationr¨ ah']h(]h)]uhj«h-]r© h/X{…�rª }r« (hUhj¤ ubah!j¼ubh/X r¬ …�r­ }r® (hX hj«ubj±)�r¯ }r° (hXthdatah#}r± (h%]h&]r² Unamer³ ah']h(]h)]uhj«h-]r´ h/Xthdatarµ …�r¶ }r· (hUhj¯ ubah!j¼ubh/X …�r¸ }r¹ (hX hj«ubj±)�rº }r» (hX*h#}r¼ (h%]h&]r½ Uoperatorr¾ ah']h(]h)]uhj«h-]r¿ h/X*…�rÀ }rÁ (hUhjº ubah!j¼ubj±)�r }rà (hXdatah#}rÄ (h%]h&]rÅ UnamerÆ ah']h(]h)]uhj«h-]rÇ h/XdatarÈ …�rÉ }rÊ (hUhj ubah!j¼ubj±)�rË }rÌ (hX;h#}rÍ (h%]h&]rÎ U punctuationrÏ ah']h(]h)]uhj«h-]rÐ h/X;…�rÑ }rÒ (hUhjË ubah!j¼ubh/X rÓ …�rÔ }rÕ (hX hj«ubj±)�rÖ }r× (hXdatah#}rØ (h%]h&]rÙ UnamerÚ ah']h(]h)]uhj«h-]rÛ h/XdatarÜ …�rÝ }rÞ (hUhjÖ ubah!j¼ubh/X …�rß }rà (hX hj«ubj±)�rá }râ (hX=h#}rã (h%]h&]rä Uoperatorrå ah']h(]h)]uhj«h-]ræ h/X=…�rç }rè (hUhjá ubah!j¼ubh/X …�ré }rê (hX hj«ubj±)�rë }rì (hX(h#}rí (h%]h&]rî U punctuationrï ah']h(]h)]uhj«h-]rð h/X(…�rñ }rò (hUhjë ubah!j¼ubj±)�ró }rô (hXthdatah#}rõ (h%]h&]rö Unamer÷ ah']h(]h)]uhj«h-]rø h/Xthdatarù …�rú }rû (hUhjó ubah!j¼ubh/X …�rü }rý (hX hj«ubj±)�rþ }rÿ (hX*h#}r (h%]h&]r Uoperatorr ah']h(]h)]uhj«h-]r h/X*…�r }r (hUhjþ ubah!j¼ubj±)�r }r (hX)h#}r (h%]h&]r U punctuationr ah']h(]h)]uhj«h-]r h/X)…�r }r (hUhj ubah!j¼ubh/X …�r }r (hX hj«ubj±)�r }r (hXptrh#}r (h%]h&]r Unamer ah']h(]h)]uhj«h-]r h/Xptrr …�r }r (hUhj ubah!j¼ubj±)�r }r (hX;h#}r (h%]h&]r U punctuationr ah']h(]h)]uhj«h-]r h/X;…�r }r (hUhj ubah!j¼ubh/X r! …�r" }r# (hX hj«ubj±)�r$ }r% (hX&/* type cast to a pointer to thdata */h#}r& (h%]h&]r' (Ucommentr( U multiliner) eh']h(]h)]uhj«h-]r* h/X&/* type cast to a pointer to thdata */r+ …�r, }r- (hUhj$ ubah!j¼ubh/X r. …�r/ }r0 (hX hj«ubj±)�r1 }r2 (hX/* do the work */h#}r3 (h%]h&]r4 (Ucommentr5 U multiliner6 eh']h(]h)]uhj«h-]r7 h/X/* do the work */r8 …�r9 }r: (hUhj1 ubah!j¼ubh/X r; …�r< }r= (hX hj«ubj±)�r> }r? (hXprintfh#}r@ (h%]h&]rA UnamerB ah']h(]h)]uhj«h-]rC h/XprintfrD …�rE }rF (hUhj> ubah!j¼ubj±)�rG }rH (hX(h#}rI (h%]h&]rJ U punctuationrK ah']h(]h)]uhj«h-]rL h/X(…�rM }rN (hUhjG ubah!j¼ubj±)�rO }rP (hX"Thread %d says%s h#}rQ (h%]h&]rR (UliteralrS UstringrT eh']h(]h)]uhj«h-]rU h/X"Thread %d says%s rV …�rW }rX (hUhjO ubah!j¼ubj±)�rY }rZ (hX\nh#}r[ (h%]h&]r\ (Uliteralr] Ustringr^ Uescaper_ eh']h(]h)]uhj«h-]r` h/X\nra …�rb }rc (hUhjY ubah!j¼ubj±)�rd }re (hX"h#}rf (h%]h&]rg (Uliteralrh Ustringri eh']h(]h)]uhj«h-]rj h/X"…�rk }rl (hUhjd ubah!j¼ubj±)�rm }rn (hX,h#}ro (h%]h&]rp U punctuationrq ah']h(]h)]uhj«h-]rr h/X,…�rs }rt (hUhjm ubah!j¼ubh/X …�ru }rv (hX hj«ubj±)�rw }rx (hXdatah#}ry (h%]h&]rz Unamer{ ah']h(]h)]uhj«h-]r| h/Xdatar} …�r~ }r (hUhjw ubah!j¼ubj±)�r€ }r� (hX->h#}r‚ (h%]h&]rƒ Uoperatorr„ ah']h(]h)]uhj«h-]r… h/X->r† …�r‡ }rˆ (hUhj€ ubah!j¼ubj±)�r‰ }rŠ (hX thread_noh#}r‹ (h%]h&]rŒ Unamer� ah']h(]h)]uhj«h-]rŽ h/X thread_nor� …�r� }r‘ (hUhj‰ ubah!j¼ubj±)�r’ }r“ (hX,h#}r” (h%]h&]r• U punctuationr– ah']h(]h)]uhj«h-]r— h/X,…�r˜ }r™ (hUhj’ ubah!j¼ubh/X …�rš }r› (hX hj«ubj±)�rœ }r� (hXdatah#}rž (h%]h&]rŸ Unamer  ah']h(]h)]uhj«h-]r¡ h/Xdatar¢ …�r£ }r¤ (hUhjœ ubah!j¼ubj±)�r¥ }r¦ (hX->h#}r§ (h%]h&]r¨ Uoperatorr© ah']h(]h)]uhj«h-]rª h/X->r« …�r¬ }r­ (hUhj¥ ubah!j¼ubj±)�r® }r¯ (hXmessageh#}r° (h%]h&]r± Unamer² ah']h(]h)]uhj«h-]r³ h/Xmessager´ …�rµ }r¶ (hUhj® ubah!j¼ubj±)�r· }r¸ (hX);h#}r¹ (h%]h&]rº U punctuationr» ah']h(]h)]uhj«h-]r¼ h/X);r½ …�r¾ }r¿ (hUhj· ubah!j¼ubh/X rÀ …�rÁ }r (hX hj«ubj±)�rà }rÄ (hXreturnh#}rÅ (h%]h&]rÆ UkeywordrÇ ah']h(]h)]uhj«h-]rÈ h/XreturnrÉ …�rÊ }rË (hUhjà ubah!j¼ubh/X …�rÌ }rÍ (hX hj«ubj±)�rÎ }rÏ (hX0h#}rÐ (h%]h&]rÑ (UliteralrÒ UnumberrÓ UintegerrÔ eh']h(]h)]uhj«h-]rÕ h/X0…�rÖ }r× (hUhjÎ ubah!j¼ubj±)�rØ }rÙ (hX;h#}rÚ (h%]h&]rÛ U punctuationrÜ ah']h(]h)]uhj«h-]rÝ h/X;…�rÞ }rß (hUhjØ ubah!j¼ubh/X …�rà }rá (hX hj«ubj±)�râ }rã (hX}h#}rä (h%]h&]rå U punctuationræ ah']h(]h)]uhj«h-]rç h/X}…�rè }ré (hUhjâ ubah!j¼ubeubjõ)�rê }rë (hUhh­hh¯h!jøh#}rì (h%]h&]h']h(]h)]uh+M:h,hh-]rí jû)�rî }rï (hUjþKhjê hh¯h!h+h#}rð (h%]h&]h']h(]h)]uh+Kh,hh-]ubaubhØ)�rñ }rò (hX4Cross-compile the **thread-ex.c** file using the cross-compile toolchain. In this example we will first add the toolchain to our PATH. This only needs to be done once. We will also add the pthread library to the compile line so that we will link with the library file that provides the pthread\_\* functions.hh­hh¯h!hÛh#}ró (h%]h&]h']h(]h)]uh+M<h,hh-]rô (h/XCross-compile the rõ …�rö }r÷ (hXCross-compile the hjñ ubj )�rø }rù (hX**thread-ex.c**h#}rú (h%]h&]h']h(]h)]uhjñ h-]rû h/X thread-ex.crü …�rý }rþ (hUhjø ubah!jubh/X file using the cross-compile toolchain. In this example we will first add the toolchain to our PATH. This only needs to be done once. We will also add the pthread library to the compile line so that we will link with the library file that provides the pthread_* functions.rÿ …�r }r (hX file using the cross-compile toolchain. In this example we will first add the toolchain to our PATH. This only needs to be done once. We will also add the pthread library to the compile line so that we will link with the library file that provides the pthread\_\* functions.hjñ ubeubjõ)�r }r (hUhh­hh¯h!jøh#}r (h%]h&]h']h(]h)]uh+MBh,hh-]r jû)�r }r (hUjþKhj hh¯h!h+h#}r (h%]h&]h']h(]h)]uh+Kh,hh-]ubaubhØ)�r }r (hX\**export PATH="/linux-devkit/sysroots/x86\_64-arago-linux/usr/bin/:$PATH"**hh­hh¯h!hÛh#}r (h%]h&]h']h(]h)]uh+MDh,hh-]r j )�r }r (hX\**export PATH="/linux-devkit/sysroots/x86\_64-arago-linux/usr/bin/:$PATH"**h#}r (h%]h&]h']h(]h)]uhj h-]r h/XWexport PATH="/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/:$PATH"r …�r }r (hUhj ubah!jubaubjõ)�r }r (hUhh­hh¯h!jøh#}r (h%]h&]h']h(]h)]uh+MGh,hh-]r jû)�r }r (hUjþKhj hh¯h!h+h#}r (h%]h&]h']h(]h)]uh+Kh,hh-]ubaubhØ)�r }r (hXI**${TOOLCHAIN_PREFIX}gcc '**\ **-lpthread'** **thread-ex.c -o thread-ex**r hh­hh¯h!hÛh#}r (h%]h&]h']h(]h)]uh+MIh,hh-]r (j )�r }r! (hX**${TOOLCHAIN_PREFIX}gcc '**h#}r" (h%]h&]h']h(]h)]uhj h-]r# h/X${TOOLCHAIN_PREFIX}gcc 'r$ …�r% }r& (hUhj ubah!jubh/X…�r' }r( (hX\ hj ubj )�r) }r* (hX**-lpthread'**h#}r+ (h%]h&]h']h(]h)]uhj h-]r, h/X -lpthread'r- …�r. }r/ (hUhj) ubah!jubh/X …�r0 }r1 (hX hj ubj )�r2 }r3 (hX**thread-ex.c -o thread-ex**h#}r4 (h%]h&]h']h(]h)]uhj h-]r5 h/Xthread-ex.c -o thread-exr6 …�r7 }r8 (hUhj2 ubah!jubeubjõ)�r9 }r: (hUhh­hh¯h!jøh#}r; (h%]h&]h']h(]h)]uh+MKh,hh-]r< jû)�r= }r> (hUjþKhj9 hh¯h!h+h#}r? (h%]h&]h']h(]h)]uh+Kh,hh-]ubaubjd)�r@ }rA (hX8The -lpthread entry above was made italics for emphasis.rB hh­hh¯h!jhh#}rC (h%]h&]h']h(]h)]uh+Nh,hh-]rD hØ)�rE }rF (hjB hj@ hh¯h!hÛh#}rG (h%]h&]h']h(]h)]uh+MNh-]rH h/X8The -lpthread entry above was made italics for emphasis.rI …�rJ }rK (hjB hjE ubaubaubhË)�rL }rM (hXConfigure/AutotoolsrN hh­hh¯h!hÏh#}rO (h(]rP UconfigureautotoolsrQ ah']h%]h&]h)]rR hauh+Nh,hh-]rS h/XConfigure/AutotoolsrT …�rU }rV (hjN hjL ubaubhØ)�rW }rX (hX<The last case to cover is one where the **environment-setup** script is useful. In this case we will download the **gst-plugins-bad** package and configure and build it using the environment-setup script to configure the system for the **autotools** to properly detect the libraries available as pre-built libraries.hh­hh¯h!hÛh#}rY (h%]h&]h']h(]h)]uh+MSh,hh-]rZ (h/X(The last case to cover is one where the r[ …�r\ }r] (hX(The last case to cover is one where the hjW ubj )�r^ }r_ (hX**environment-setup**h#}r` (h%]h&]h']h(]h)]uhjW h-]ra h/Xenvironment-setuprb …�rc }rd (hUhj^ ubah!jubh/X5 script is useful. In this case we will download the re …�rf }rg (hX5 script is useful. In this case we will download the hjW ubj )�rh }ri (hX**gst-plugins-bad**h#}rj (h%]h&]h']h(]h)]uhjW h-]rk h/Xgst-plugins-badrl …�rm }rn (hUhjh ubah!jubh/Xg package and configure and build it using the environment-setup script to configure the system for the ro …�rp }rq (hXg package and configure and build it using the environment-setup script to configure the system for the hjW ubj )�rr }rs (hX **autotools**h#}rt (h%]h&]h']h(]h)]uhjW h-]ru h/X autotoolsrv …�rw }rx (hUhjr ubah!jubh/XC to properly detect the libraries available as pre-built libraries.ry …�rz }r{ (hXC to properly detect the libraries available as pre-built libraries.hjW ubeubcdocutils.nodes enumerated_list r| )�r} }r~ (hUhh­hh¯h!Uenumerated_listr h#}r€ (Usuffixr� U.h(]h']h%]Uprefixr‚ Uh&]h)]Uenumtyperƒ Uarabicr„ uh+MYh,hh-]r… (j÷)�r† }r‡ (hX=First download the `gst-plugins-bad-0.10.11.tar.gz `__ package wget http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-0.10.11.tar.gz .. raw:: html
**IMPORTANT** In order to build the gst-plugins-bad package you will need libglib2.0-dev installed on your system. You can install this using **sudo apt-get install libglib2.0-dev** .. raw:: html
hj} hNh!jûh#}rˆ (h%]h&]h']h(]h)]uh+Nh,hh-]r‰ (hØ)�rŠ }r‹ (hXìFirst download the `gst-plugins-bad-0.10.11.tar.gz `__ package wget http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-0.10.11.tar.gzhj† hh¯h!hÛh#}rŒ (h%]h&]h']h(]h)]uh+MYh-]r� (h/XFirst download the rŽ …�r� }r� (hXFirst download the hjŠ ubho)�r‘ }r’ (hXx`gst-plugins-bad-0.10.11.tar.gz `__h#}r“ (UnameXgst-plugins-bad-0.10.11.tar.gzhsXShttp://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-0.10.11.tar.gzh(]h']h%]h&]h)]uhjŠ h-]r” h/Xgst-plugins-bad-0.10.11.tar.gzr• …�r– }r— (hUhj‘ ubah!hxubh/X package wget r˜ …�r™ }rš (hX package wget hjŠ ubho)�r› }rœ (hXShttp://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-0.10.11.tar.gzr� h#}rž (Urefurij� h(]h']h%]h&]h)]uhjŠ h-]rŸ h/XShttp://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-0.10.11.tar.gzr  …�r¡ }r¢ (hUhj› ubah!hxubeubcdocutils.nodes raw r£ )�r¤ }r¥ (hXh
hj† hh¯h!Urawr¦ h#}r§ (UformatXhtmlhÅhÆh(]h']h%]h&]h)]uh+M_h-]r¨ h/Xh
r© …�rª }r« (hUhj¤ ubaubhØ)�r¬ }r­ (hXµ**IMPORTANT** In order to build the gst-plugins-bad package you will need libglib2.0-dev installed on your system. You can install this using **sudo apt-get install libglib2.0-dev**hj† hh¯h!hÛh#}r® (h%]h&]h']h(]h)]uh+Mdh-]r¯ (j )�r° }r± (hX **IMPORTANT**h#}r² (h%]h&]h']h(]h)]uhj¬ h-]r³ h/X IMPORTANTr´ …�rµ }r¶ (hUhj° ubah!jubh/X� In order to build the gst-plugins-bad package you will need libglib2.0-dev installed on your system. You can install this using r· …�r¸ }r¹ (hX� In order to build the gst-plugins-bad package you will need libglib2.0-dev installed on your system. You can install this using hj¬ ubj )�rº }r» (hX'**sudo apt-get install libglib2.0-dev**h#}r¼ (h%]h&]h']h(]h)]uhj¬ h-]r½ h/X#sudo apt-get install libglib2.0-devr¾ …�r¿ }rÀ (hUhjº ubah!jubeubj£ )�rÁ }r (hX
hj† hh¯h!j¦ h#}rà (UformatXhtmlhÅhÆh(]h']h%]h&]h)]uh+Mih-]rÄ h/X
rÅ …�rÆ }rÇ (hUhjÁ ubaubeubj÷)�rÈ }rÉ (hXFExtract the plugins tarball **tar zxf gst-plugins-bad-0.10.11.tar.gz**hj} hh¯h!jûh#}rÊ (h%]h&]h']h(]h)]uh+Nh,hh-]rË hØ)�rÌ }rÍ (hXFExtract the plugins tarball **tar zxf gst-plugins-bad-0.10.11.tar.gz**hjÈ hh¯h!hÛh#}rÎ (h%]h&]h']h(]h)]uh+Mmh-]rÏ (h/XExtract the plugins tarball rÐ …�rÑ }rÒ (hXExtract the plugins tarball hjÌ ubj )�rÓ }rÔ (hX***tar zxf gst-plugins-bad-0.10.11.tar.gz**h#}rÕ (h%]h&]h']h(]h)]uhjÌ h-]rÖ h/X&tar zxf gst-plugins-bad-0.10.11.tar.gzr× …�rØ }rÙ (hUhjÓ ubah!jubeubaubj÷)�rÚ }rÛ (hXJChange directory into the extracted sources **cd gst-plugins-bad-0.10.11**hj} hh¯h!jûh#}rÜ (h%]h&]h']h(]h)]uh+Nh,hh-]rÝ hØ)�rÞ }rß (hXJChange directory into the extracted sources **cd gst-plugins-bad-0.10.11**hjÚ hh¯h!hÛh#}rà (h%]h&]h']h(]h)]uh+Moh-]rá (h/X,Change directory into the extracted sources râ …�rã }rä (hX,Change directory into the extracted sources hjÞ ubj )�rå }ræ (hX**cd gst-plugins-bad-0.10.11**h#}rç (h%]h&]h']h(]h)]uhjÞ h-]rè h/Xcd gst-plugins-bad-0.10.11ré …�rê }rë (hUhjå ubah!jubeubaubj÷)�rì }rí (hX±Source the **/linux-devkit/environment-setup** script to prepare to configure and build the plugins. **source /linux-devkit/environment-setup**hj} hh¯h!jûh#}rî (h%]h&]h']h(]h)]uh+Nh,hh-]rï hØ)�rð }rñ (hX±Source the **/linux-devkit/environment-setup** script to prepare to configure and build the plugins. **source /linux-devkit/environment-setup**hjì hh¯h!hÛh#}rò (h%]h&]h']h(]h)]uh+Mqh-]ró (h/X Source the rô …�rõ }rö (hX Source the hjð ubj )�r÷ }rø (hX4**/linux-devkit/environment-setup**h#}rù (h%]h&]h']h(]h)]uhjð h-]rú h/X0/linux-devkit/environment-setuprû …�rü }rý (hUhj÷ ubah!jubh/X7 script to prepare to configure and build the plugins. rþ …�rÿ }r(hX7 script to prepare to configure and build the plugins. hjð ubj )�r}r(hX;**source /linux-devkit/environment-setup**h#}r(h%]h&]h']h(]h)]uhjð h-]rh/X7source /linux-devkit/environment-setupr…�r}r(hUhjubah!jubeubaubj÷)�r}r (hXüNow configure the package. We need to define the *host* setting to tell the configuration utility what our host system is, and we will also disable some plugins that are known to be bad. **./configure --host=i686 --disable-deinterlace2 --disable-x264**hj} hh¯h!jûh#}r (h%]h&]h']h(]h)]uh+Nh,hh-]r hØ)�r }r (hXüNow configure the package. We need to define the *host* setting to tell the configuration utility what our host system is, and we will also disable some plugins that are known to be bad. **./configure --host=i686 --disable-deinterlace2 --disable-x264**hjhh¯h!hÛh#}r(h%]h&]h']h(]h)]uh+Mth-]r(h/X1Now configure the package. We need to define the r…�r}r(hX1Now configure the package. We need to define the hj ubjŒ)�r}r(hX*host*h#}r(h%]h&]h']h(]h)]uhj h-]rh/Xhostr…�r}r(hUhjubah!j”ubh/X„ setting to tell the configuration utility what our host system is, and we will also disable some plugins that are known to be bad. r…�r}r(hX„ setting to tell the configuration utility what our host system is, and we will also disable some plugins that are known to be bad. hj ubj )�r}r(hXA**./configure --host=i686 --disable-deinterlace2 --disable-x264**h#}r(h%]h&]h']h(]h)]uhj h-]r h/X=./configure --host=i686 --disable-deinterlace2 --disable-x264r!…�r"}r#(hUhjubah!jubeubaubj÷)�r$}r%(hXÑWhen the configuration is done the last sections will show which plugins will be build based on the libraries available. This is the key point behind what the environment-setup script provides. By setting up the PKG\_CONFIG\_\* paths and other variables the configure script was able to check for required libraries being available to know which plugins to enable. Now that the sources have been configured you can compile them with a simple make command. **make** hj} hh¯h!jûh#}r&(h%]h&]h']h(]h)]uh+Nh,hh-]r'hØ)�r(}r)(hXÐWhen the configuration is done the last sections will show which plugins will be build based on the libraries available. This is the key point behind what the environment-setup script provides. By setting up the PKG\_CONFIG\_\* paths and other variables the configure script was able to check for required libraries being available to know which plugins to enable. Now that the sources have been configured you can compile them with a simple make command. **make**hj$hh¯h!hÛh#}r*(h%]h&]h']h(]h)]uh+Mxh-]r+(h/XÅWhen the configuration is done the last sections will show which plugins will be build based on the libraries available. This is the key point behind what the environment-setup script provides. By setting up the PKG_CONFIG_* paths and other variables the configure script was able to check for required libraries being available to know which plugins to enable. Now that the sources have been configured you can compile them with a simple make command. r,…�r-}r.(hXÈWhen the configuration is done the last sections will show which plugins will be build based on the libraries available. This is the key point behind what the environment-setup script provides. By setting up the PKG\_CONFIG\_\* paths and other variables the configure script was able to check for required libraries being available to know which plugins to enable. Now that the sources have been configured you can compile them with a simple make command. hj(ubj )�r/}r0(hX**make**h#}r1(h%]h&]h']h(]h)]uhj(h-]r2h/Xmaker3…�r4}r5(hUhj/ubah!jubeubaubeubeubhh¯h!Usystem_messager6h#}r7(h%]UlevelKh(]h']Usourceh¯h&]h)]UlineK„UtypeUINFOr8uh+K„h,hh-]r9hØ)�r:}r;(hXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.h#}r<(h%]h&]h']h(]h)]uhhªh-]r=h/XfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.r>…�r?}r@(hUhj:ubah!hÛubaubh©)�rA}rB(hUhh­hh¯h!j6h#}rC(h%]UlevelKh(]h']Usourceh¯h&]h)]UlineK™Utypej8uh+K™h,hh-]rDhØ)�rE}rF(hXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.h#}rG(h%]h&]h']h(]h)]uhjAh-]rHh/XfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.rI…�rJ}rK(hUhjEubah!hÛubaubh©)�rL}rM(hUhh­hh¯h!j6h#}rN(h%]UlevelKh(]h']Usourceh¯h&]h)]UlineKÈUtypej8uh+KÈh,hh-]rOhØ)�rP}rQ(hXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.h#}rR(h%]h&]h']h(]h)]uhjLh-]rSh/XfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.rT…�rU}rV(hUhjPubah!hÛubaubeUcurrent_sourcerWNU decorationrXNUautofootnote_startrYKUnameidsrZ}r[(hj‡hjìhh³h j°h hÒh j~h j$h jÐhj�hhìhjohjQ hjÏhj0uh-]r\(hŸhh4h=hFhOhXhahjhzhŒh–hƒh­ehUU transformerr]NU footnote_refsr^}r_Urefnamesr`}raUsymbol_footnotesrb]rcUautofootnote_refsrd]reUsymbol_footnote_refsrf]rgU citationsrh]rih,hU current_linerjNUtransform_messagesrk]rlUreporterrmNUid_startrnKU autofootnotesro]rpU citation_refsrq}rrUindirect_targetsrs]rtUsettingsru(cdocutils.frontend Values rvorw}rx(Ufootnote_backlinksryKUrecord_dependenciesrzNU rfc_base_urlr{Uhttps://tools.ietf.org/html/r|U tracebackr}ˆUpep_referencesr~NUstrip_commentsrNU toc_backlinksr€jhU language_coder�Uenr‚U datestamprƒNU report_levelr„KU _destinationr…NU halt_levelr†KU strip_classesr‡NhºNUerror_encoding_error_handlerrˆUbackslashreplacer‰UdebugrŠNUembed_stylesheetr‹‰Uoutput_encoding_error_handlerrŒUstrictr�U sectnum_xformrŽKUdump_transformsr�NU docinfo_xformr�KUwarning_streamr‘NUpep_file_url_templater’Upep-%04dr“Uexit_status_levelr”KUconfigr•NUstrict_visitorr–NUcloak_email_addressesr—ˆUtrim_footnote_reference_spacer˜‰Uenvr™NUdump_pseudo_xmlršNUexpose_internalsr›NUsectsubtitle_xformrœ‰U source_linkr�NUrfc_referencesržNUoutput_encodingrŸUutf-8r U source_urlr¡NUinput_encodingr¢U utf-8-sigr£U_disable_configr¤NU id_prefixr¥UU tab_widthr¦KUerror_encodingr§UUTF-8r¨U_sourcer©h¯Ugettext_compactrªˆU generatorr«NUdump_internalsr¬NU smart_quotesr­‰U pep_base_urlr®U https://www.python.org/dev/peps/r¯Usyntax_highlightr°Ulongr±Uinput_encoding_error_handlerr²j�Uauto_id_prefixr³Uidr´Udoctitle_xformrµ‰Ustrip_elements_with_classesr¶NU _config_filesr·]Ufile_insertion_enabledr¸ˆU raw_enabledr¹KU dump_settingsrºNubUsymbol_footnote_startr»KUidsr¼}r½(j‡j‚jìjçj°j«hÒhÌj~jyh³h­j$jjÐjËj�j˜hìhçjojjjQ jL jÏjÊj0j+uUsubstitution_namesr¾}r¿(X__sdk_install_dir__hX__sdk_install_file__h3X__part_family_device_names__h