{"id":45245,"date":"2023-12-11T03:39:46","date_gmt":"2024-02-05T11:08:27","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/45245-2\/"},"modified":"2024-05-04T13:02:56","modified_gmt":"2024-05-04T05:02:56","slug":"45245-2","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/45245-2\/","title":{"rendered":""},"content":{"rendered":"<p>\u9014\u4e2d\u3067\u98fd\u304d\u3061\u3083\u3063\u305f\u3093\u3060\u3051\u3069\u3001\u4e0b\u66f8\u304d\u306b\u3042\u3063\u3066\u3082\u90aa\u9b54\u306a\u306e\u3067\u6295\u7a3f\u3057\u3068\u304d\u307e\u3059<\/p>\n<p>Rust\u3067Arduino\u3092\u52d5\u304b\u3057\u3066\u898b\u305f\u3044\u3068\u601d\u3044\u3001avr-rust\u3068\u3044\u3046AVR\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u305fRust\u304c\u3042\u308b\u306e\u3067\u3001\u4f7f\u3063\u3066\u898b\u3088\u3046\u3068\u601d\u3044\u307e\u3057\u305f\u3002<\/p>\n<h3>\u74b0\u5883\u306fMacOS<\/h3>\n<h1>avr-rust\u306e\u30d3\u30eb\u30c9\u3068\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h1>\n<pre class=\"post-pre\"><code>$ git clone https:\/\/github.com\/avr-rust\/rust.git\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ cd rust\r\n$ mkdir build &amp;&amp; cd build\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ ..\/rust\/configure \\\r\n  --enable-debug \\\r\n  --disable-docs \\\r\n  --enable-llvm-assertions \\\r\n  --enable-debug-assertions \\\r\n  --enable-optimize \\\r\n  --prefix=\/opt\/avr-rust\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ make\r\n$ make install\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ rustup toolchain link avr-toolchain $(realpath $(find . -name 'stage1'))\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>rustup default avr-toolchain\r\n<\/code><\/pre>\n<h2>\u79c1\u306fmake\u3067\u30a8\u30e9\u30fc\u304c\u51fa\u307e\u3057\u305f\u3002<\/h2>\n<pre class=\"post-pre\"><code><span class=\"gp\">haruka:rust haru$<\/span> make\r\n<span class=\"go\">Updating submodules\r\n    Finished dev [unoptimized] target(s) in 0.0 secs\r\n<\/span><span class=\"gp\">Building stage0 std artifacts (x86_64-apple-darwin -&gt;<\/span> x86_64-apple-darwin<span class=\"o\">)<\/span>\r\n<span class=\"go\">    Finished release [optimized] target(s) in 0.0 secs\r\n<\/span><span class=\"gp\">Copying stage0 std from stage0 (x86_64-apple-darwin -&gt;<\/span> x86_64-apple-darwin \/ x86_64-apple-darwin<span class=\"o\">)<\/span>\r\n<span class=\"gp\">Building stage0 test artifacts (x86_64-apple-darwin -&gt;<\/span> x86_64-apple-darwin<span class=\"o\">)<\/span>\r\n<span class=\"go\">    Finished release [optimized] target(s) in 0.0 secs\r\n<\/span><span class=\"gp\">Copying stage0 test from stage0 (x86_64-apple-darwin -&gt;<\/span> x86_64-apple-darwin \/ x86_64-apple-darwin<span class=\"o\">)<\/span>\r\n<span class=\"go\">Building LLVM for x86_64-apple-darwin\r\n<\/span><span class=\"gp\">running: \"cmake\" \"\/Users\/haru\/rust\/src\/llvm\" \"-DLLVM_ENABLE_ASSERTIONS=ON\" \"-DLLVM_TARGETS_TO_BUILD=X86;<\/span>ARM<span class=\"p\">;<\/span>AArch64<span class=\"p\">;<\/span>Mips<span class=\"p\">;<\/span>PowerPC<span class=\"p\">;<\/span>SystemZ<span class=\"p\">;<\/span>JSBackend<span class=\"p\">;<\/span>MSP430<span class=\"p\">;<\/span>Sparc<span class=\"p\">;<\/span>NVPTX<span class=\"p\">;<\/span>Hexagon<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD<\/span><span class=\"o\">=<\/span>AVR<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DLLVM_INCLUDE_EXAMPLES<\/span><span class=\"o\">=<\/span>OFF<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DLLVM_INCLUDE_TESTS<\/span><span class=\"o\">=<\/span>OFF<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DLLVM_INCLUDE_DOCS<\/span><span class=\"o\">=<\/span>OFF<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DLLVM_ENABLE_ZLIB<\/span><span class=\"o\">=<\/span>OFF<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DWITH_POLLY<\/span><span class=\"o\">=<\/span>OFF<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DLLVM_ENABLE_TERMINFO<\/span><span class=\"o\">=<\/span>OFF<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DLLVM_ENABLE_LIBEDIT<\/span><span class=\"o\">=<\/span>OFF<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DLLVM_PARALLEL_COMPILE_JOBS<\/span><span class=\"o\">=<\/span>4<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DLLVM_TARGET_ARCH<\/span><span class=\"o\">=<\/span>x86_64<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DLLVM_DEFAULT_TARGET_TRIPLE<\/span><span class=\"o\">=<\/span>x86_64-apple-darwin<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DLLVM_LINK_LLVM_DYLIB<\/span><span class=\"o\">=<\/span>ON<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DCMAKE_C_COMPILER<\/span><span class=\"o\">=<\/span>cc<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DCMAKE_CXX_COMPILER<\/span><span class=\"o\">=<\/span>c++<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DCMAKE_C_FLAGS<\/span><span class=\"o\">=<\/span><span class=\"nt\">-ffunction-sections<\/span> <span class=\"nt\">-fdata-sections<\/span> <span class=\"nt\">-fPIC<\/span> <span class=\"nt\">-m64<\/span> <span class=\"nt\">-stdlib<\/span><span class=\"o\">=<\/span>libc++<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DCMAKE_CXX_FLAGS<\/span><span class=\"o\">=<\/span><span class=\"nt\">-ffunction-sections<\/span> <span class=\"nt\">-fdata-sections<\/span> <span class=\"nt\">-fPIC<\/span> <span class=\"nt\">-m64<\/span> <span class=\"nt\">-stdlib<\/span><span class=\"o\">=<\/span>libc++<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DCMAKE_INSTALL_PREFIX<\/span><span class=\"o\">=<\/span>\/Users\/haru\/rust\/build\/x86_64-apple-darwin\/llvm<span class=\"s2\">\" \"<\/span><span class=\"nt\">-DCMAKE_BUILD_TYPE<\/span><span class=\"o\">=<\/span>Release<span class=\"s2\">\"\r\n<\/span><span class=\"go\">CMake Deprecation Warning at CMakeLists.txt:15 (cmake_policy):\r\n  The OLD behavior for policy CMP0051 will be removed from a future version\r\n  of CMake.\r\n\r\n  The cmake-policies(7) manual explains that the OLD behaviors of all\r\n  policies are deprecated and that a policy should be set to OLD only under\r\n  specific short-term circumstances.  Projects should be ported to the NEW\r\n  behavior and not rely on setting a policy to OLD.\r\n\r\n\r\n-- Found libtool - \/Applications\/Xcode.app\/Contents\/Developer\/Toolchains\/XcodeDefault.xctoolchain\/usr\/bin\/libtool\r\nCMake Warning at CMakeLists.txt:140 (message):\r\n  Job pooling is only available with Ninja generators.\r\n\r\n\r\n-- Native target architecture is X86\r\n-- Threads enabled.\r\n-- Doxygen disabled.\r\n-- Sphinx disabled.\r\n-- Go bindings enabled.\r\n-- Found ld64 - \/Applications\/Xcode.app\/Contents\/Developer\/Toolchains\/XcodeDefault.xctoolchain\/usr\/bin\/ld\r\n-- Could NOT find OCaml (missing: OCAMLFIND OCAML_VERSION OCAML_STDLIB_PATH)\r\n-- Could NOT find OCaml (missing: OCAMLFIND OCAML_VERSION OCAML_STDLIB_PATH)\r\n-- OCaml bindings disabled.\r\n-- LLVM host triple: x86_64-apple-darwin17.5.0\r\n-- LLVM default target triple: x86_64-apple-darwin\r\n-- Building with -fPIC\r\nCMake Error at CMakeLists.txt:612 (message):\r\n  Python 2.7 or newer is required\r\n\r\n\r\n-- Configuring incomplete, errors occurred!\r\nSee also \"\/Users\/haru\/rust\/build\/x86_64-apple-darwin\/llvm\/build\/CMakeFiles\/CMakeOutput.log\".\r\nSee also \"\/Users\/haru\/rust\/build\/x86_64-apple-darwin\/llvm\/build\/CMakeFiles\/CMakeError.log\".\r\nthread 'main' panicked at '\r\ncommand did not execute successfully, got: exit code: 1\r\n\r\nbuild script failed, must exit now', \/Users\/haru\/.cargo\/registry\/src\/github.com-1ecc6299db9ec823\/cmake-0.1.25\/src\/lib.rs:599:4\r\nnote: Run with `RUST_BACKTRACE=1` for a backtrace.\r\n    finished in 0.975\r\nfailed to run: \/Users\/haru\/rust\/build\/bootstrap\/debug\/bootstrap build\r\nBuild completed unsuccessfully in 0:00:10\r\nmake: *** [all] Error 1\r\n<\/span><\/code><\/pre>\n<p>Python 2.7 or newer is required\u3068\u66f8\u3044\u3066\u3044\u307e\u3059\u304c\u3001Python3\u3060\u304b\u3089Python2.7\u3088\u308a\u306f\u65b0\u3057\u3044\u304b\u3089\u3044\u3044\u3058\u3083\u3093\u3068\u601d\u3063\u3066\u3001\u539f\u56e0\u304c\u4e0d\u660e\u3067\u3057\u305f\u3002<\/p>\n<p>\u3057\u304b\u3057\u3001avr-rust\u306eRUST_README.md\u3092\u898b\u308b\u3068\u3001python 2.7 (but not 3.x)\u3068\u66f8\u3044\u3066\u3042\u3063\u305f\u306e\u3067\u3001Python3\u3060\u3081\u3058\u3083\u3093\u3068\u306a\u308a\u3001<br \/>\n\u3061\u3087\u3046\u3069Pyenv\u30672.7\u304c\u30ed\u30fc\u30ab\u30eb\u306b\u3042\u3063\u305f\u306e\u30672.7\u3067\u3084\u3063\u3066\u898b\u308b\u3068\u3046\u307e\u304f\u3044\u304d\u307e\u3057\u305f\u3002<\/p>\n<h2>\u539f\u56e0\u306f\u3000Python\u306e\u30d0\u30fc\u30b8\u30e7\u30f3<\/h2>\n<h2>toolchain\u306e\u767b\u9332\u3067\u3082\u30a8\u30e9\u30fc<\/h2>\n<pre class=\"post-pre\"><code>$ rustup toolchain link avr-toolchain $(realpath $(find . -name 'stage1'))\r\n<\/code><\/pre>\n<p>realpath\u30b3\u30de\u30f3\u30c9\u304cMacOS\u306b\u306f\u306a\u3044\u306e\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/p>\n<pre class=\"post-pre\"><code>$ brew install coreutils\r\n<\/code><\/pre>\n<p>\u3053\u308c\u3067\u3001avr-rust\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u304a\u3063\u3051\u30fc\u3002<\/p>\n<h1>L\u30c1\u30ab\u3092\u3057\u305f\u3044<\/h1>\n<p>\u591a\u5206\u3067\u304d\u308b\u3093\u3060\u3088\u306a<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9014\u4e2d\u3067\u98fd\u304d\u3061\u3083\u3063\u305f\u3093\u3060\u3051\u3069\u3001\u4e0b\u66f8\u304d\u306b\u3042\u3063\u3066\u3082\u90aa\u9b54\u306a\u306e\u3067\u6295\u7a3f\u3057\u3068\u304d\u307e\u3059 Rust\u3067Arduino\u3092\u52d5\u304b\u3057\u3066\u898b\u305f\u3044 [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-45245","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>- Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/45245-2\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:description\" content=\"\u9014\u4e2d\u3067\u98fd\u304d\u3061\u3083\u3063\u305f\u3093\u3060\u3051\u3069\u3001\u4e0b\u66f8\u304d\u306b\u3042\u3063\u3066\u3082\u90aa\u9b54\u306a\u306e\u3067\u6295\u7a3f\u3057\u3068\u304d\u307e\u3059 Rust\u3067Arduino\u3092\u52d5\u304b\u3057\u3066\u898b\u305f\u3044 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/45245-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-05T11:08:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-04T05:02:56+00:00\" \/>\n<meta name=\"author\" content=\"\u5b87, \u534e\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u5b87, \u534e\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/45245-2\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/45245-2\/\",\"name\":\"- Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2024-02-05T11:08:27+00:00\",\"dateModified\":\"2024-05-04T05:02:56+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/45245-2\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458\",\"name\":\"\u5b87, \u534e\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g\",\"caption\":\"\u5b87, \u534e\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yuhua\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/45245-2\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"- Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/45245-2\/","og_locale":"zh_CN","og_type":"article","og_description":"\u9014\u4e2d\u3067\u98fd\u304d\u3061\u3083\u3063\u305f\u3093\u3060\u3051\u3069\u3001\u4e0b\u66f8\u304d\u306b\u3042\u3063\u3066\u3082\u90aa\u9b54\u306a\u306e\u3067\u6295\u7a3f\u3057\u3068\u304d\u307e\u3059 Rust\u3067Arduino\u3092\u52d5\u304b\u3057\u3066\u898b\u305f\u3044 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/45245-2\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2024-02-05T11:08:27+00:00","article_modified_time":"2024-05-04T05:02:56+00:00","author":"\u5b87, \u534e","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u5b87, \u534e","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"3 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/45245-2\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/45245-2\/","name":"- Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2024-02-05T11:08:27+00:00","dateModified":"2024-05-04T05:02:56+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/45245-2\/"]}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458","name":"\u5b87, \u534e","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g","caption":"\u5b87, \u534e"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yuhua\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/45245-2\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=45245"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45245\/revisions"}],"predecessor-version":[{"id":98479,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45245\/revisions\/98479"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=45245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=45245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=45245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}