{"id":318862,"date":"2021-03-02T09:00:48","date_gmt":"2021-03-02T09:00:48","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=318862"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=318862","title":{"rendered":"\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c Rust-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u041e\u0421 \u0410\u0432\u0440\u043e\u0440\u0430"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ae0\/90e\/da0\/ae090eda0107a889bcb9f7805f08d58b.jpg\" width=\"1600\" height=\"1000\"><figcaption><\/figcaption><\/figure>\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0428\u0430\u043c\u0438\u043b\u044c, \u044f \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u041a\u0420\u041e\u041a. \u041f\u043e\u043c\u0438\u043c\u043e \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0447\u0435\u0433\u043e \u043c\u044b \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f \u0435\u0449\u0451 \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0410\u0432\u0440\u043e\u0440\u0430, \u0435\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0446\u0435\u043d\u0442\u0440 \u043a\u043e\u043c\u043f\u0435\u0442\u0435\u043d\u0446\u0438\u0439 \u043f\u043e \u043d\u0435\u0439. <\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u044b, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043f\u043e\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0432\u044f\u0437\u043a\u0443 C++ \u0438 QML, \u043d\u043e \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043f\u043e\u0434\u0441\u0435\u0432 \u043d\u0430 &#171;\u0440\u0436\u0430\u0432\u0443\u044e&#187; \u0438\u0433\u043b\u0443 Rust, \u044f \u043d\u0435 \u043c\u043e\u0433 \u043d\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043b\u044e\u0431\u0438\u043c\u044b\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043e\u043f\u0438\u0448\u0443 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043f\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Rust, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0439 \u041e\u0421. \u0421\u0440\u0430\u0437\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u044e\u0441\u044c, \u0447\u0442\u043e \u043b\u0435\u0433\u043a\u0438\u0445 \u043f\u0443\u0442\u0435\u0439 \u044f \u043d\u0435 \u0438\u0441\u043a\u0430\u043b \u2014 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u043d\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0410\u0432\u0440\u043e\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0430 \u043e\u0433\u043e\u043d\u044c\u043a\u0430 \u0432 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u041d\u043e, \u043a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u0430\u044f \u041e\u0421, \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u0430\u0440\u0434\u043a\u043e\u0440.<\/p>\n<p>\u041f\u0430\u0440\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0443 \u043c\u0435\u043d\u044f \u0443\u0448\u043b\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u0440\u0435\u0447\u044c \u043e \u043d\u0451\u043c \u043f\u043e\u0439\u0434\u0451\u0442 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438), \u0435\u0449\u0451 \u043f\u0430\u0440\u0430 \u0434\u043d\u0435\u0439 \u2014 \u043d\u0430 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c, \u0432\u044b\u0431\u043e\u0440 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 GUI (\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0432\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f). \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u201c\u0441\u043a\u0435\u043b\u0435\u0442\u201d \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043a \u0441\u0431\u043e\u0440\u043a\u0435 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u0442\u044c \u201c\u043c\u044f\u0441\u043e\u201d.<\/p>\n<h3>\u0413\u043e\u0442\u043e\u0432\u0438\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0418\u0442\u0430\u043a, \u0440\u0430\u0431\u043e\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u0435\u0441\u0442\u0438\u0441\u044c \u0438\u0437-\u043f\u043e\u0434 Ubuntu Linux \u0441 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c Rust. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 Aquarius NS220 \u0441 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u041e\u0421 \u0410\u0432\u0440\u043e\u0440\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 (\u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438) \u0432\u0435\u0440\u0441\u0438\u0438 3.2.2 \u0441 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c \u0440\u0435\u0436\u0438\u043c\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u044f\u0437\u044c \u043f\u043e SSH, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043a\u0440\u043e\u0441\u0441\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b ARM, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u043c \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0435 \u0441\u0442\u043e\u0438\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440.<\/p>\n<pre><code class=\"bash\">sudo apt install -y g++-arm-linux-gnueabihf rustup target add armv7-unknown-linux-gnueabihf<\/code><\/pre>\n<p>\u0412 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u041e\u0421 \u0410\u0432\u0440\u043e\u0440\u0430 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 \u0438\u0437 \u0441\u043e\u0441\u0442\u0430\u0432\u0430 Aurora Certified SDK \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <code>ompcert-cli<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u043a\u0435\u0442 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 RPM. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0440\u0430\u0437\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443<a href=\"https:\/\/github.com\/iqlusioninc\/cargo-rpm\"> <u>cargo-rpm<\/u><\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u044c\u043c\u0451\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u0432\u0441\u044e \u0440\u0443\u0442\u0438\u043d\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 RPM-\u043f\u0430\u043a\u0435\u0442:<\/p>\n<pre><code class=\"bash\">cargo install cargo-rpm<\/code><\/pre>\n<p>\u0421\u0430\u043c\u0443 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f RPM-\u043f\u0430\u043a\u0435\u0442\u0430 \u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443, \u043e\u043d\u0430 \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432 <a href=\"https:\/\/community.omprussia.ru\/documentation\/software_development\/certified_os\/package_signing.html\"><u>\u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u0445<\/u><\/a> \u041e\u0421 \u0410\u0432\u0440\u043e\u0440\u0430.<\/p>\n<p>Aurora SDK \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c <a href=\"https:\/\/sdk-repo.omprussia.ru\/sdk\/installers-cert\/3.2.2\/\"><u>\u0441 \u0441\u0430\u0439\u0442\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f<\/u><\/a>.<\/p>\n<h3>\u0427\u0430\u0441\u0442\u044c 1. Hello. World<\/h3>\n<p><strong>TL;DR<\/strong> \u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 <a href=\"https:\/\/github.com\/crocinc\/aurora-rust-helloworld\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a> \u043d\u0430 \u0413\u0438\u0442\u0445\u0430\u0431\u0435.<\/p>\n<h4>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442<\/h4>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0443\u0441\u0442\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 Rust:<\/p>\n<pre><code class=\"bash\">cargo new aurora-rust-helloworld<\/code><\/pre>\n<p>\u041f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c .spec \u0444\u0430\u0439\u043b \u0434\u043b\u044f RPM-\u043f\u0430\u043a\u0435\u0442\u0430:<\/p>\n<pre><code>cargo rpm init<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438, \u0447\u0442\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u0432 <code>Cargo.toml<\/code>, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u0445:<\/p>\n<p><em>Cargo.toml<\/em>:<\/p>\n<pre><code class=\"rust\">[package] name = \"aurora-rust-helloworld\" version = \"0.1.0\" authors = [\"Shamil Yakupov &lt;syakupov@croc.ru&gt;\"] edition = \"2018\" description = \"Rust example for Aurora OS\" license = \"MIT\"<\/code><\/pre>\n<p>\u0417\u0430\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u0432 \u043f\u0430\u043f\u043a\u0443 <code>.cargo<\/code> \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043b\u0438\u043d\u043a\u0435\u0440\u0430 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043f\u043e\u0434 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 ARM:<\/p>\n<p><em>.cargo\/config.toml<\/em>:<\/p>\n<pre><code class=\"rust\">[target.armv7-unknown-linux-gnueabihf] linker = \"arm-linux-gnueabihf-gcc\"<\/code><\/pre>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c RPM-\u043f\u0430\u043a\u0435\u0442:<\/p>\n<pre><code class=\"bash\">cargo rpm init cargo rpm build -v --target=armv7-unknown-linux-gnueabihf<\/code><\/pre>\n<p>\u0412\u0441\u0451 \u0441\u043e\u0431\u0440\u0430\u043b\u043e\u0441\u044c, \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u043c RPM \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 <code>target\/armv7-unknown-linux-gnueabihf\/release\/rpmbuild\/RPMS\/armv7hl<\/code>, \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e, \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043d\u0430 \u043f\u043b\u0430\u043d\u0448\u0435\u0442 \u0438 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c:<\/p>\n<pre><code class=\"rust\">$ devel-su Password: # pkcon install-local .\/aurora-rust-helloworld-0.1.0-1.armv7hl.rpm<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443:<\/p>\n<pre><code class=\"bash\">Fatal error: nothing provides libc.so.6(GLIBC_2.32) needed by  aurora-rust-helloworld-0.1.0-1.armv7hl<\/code><\/pre>\n<p>\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0435\u0440\u0441\u0438\u044e <code>glibc<\/code> \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435, \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u044f\u0432\u043d\u043e \u043d\u0438\u0436\u0435 \u0442\u043e\u0439, \u0447\u0442\u043e \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"rust\">$ ldd --version ldd (GNU libc) 2.28<\/code><\/pre>\n<p>\u0427\u0442\u043e \u0436, \u0442\u043e\u0433\u0434\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441 \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430, \u0437\u0430\u043a\u0438\u043d\u0443\u0442\u044c \u0438\u0445 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>lib<\/code> \u0438 \u0441\u043b\u0438\u043d\u043a\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u0438\u043c\u0438. \u0414\u043b\u044f \u0432\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u0438\u043d\u043a\u0435\u0440\u043e\u043c, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u043c \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 Aurora SDK, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043a\u0438\u043d\u0435\u043c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>bin<\/code>. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b. \u041c\u0435\u043d\u044f\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 <code>.cargo\/config.toml<\/code>:<\/p>\n<pre><code class=\"rust\">[target.armv7-unknown-linux-gnueabihf] rustflags = [\"-C\", \"link-args=-L lib\"] linker = \"bin\/armv7hl-meego-linux-gnueabi-ld\"<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043e\u0431\u0440\u0430\u0442\u044c:<\/p>\n<pre><code class=\"bash\">cargo build --release --target=armv7-unknown-linux-gnueabihf<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438:<\/p>\n<pre><code class=\"rust\">aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find -lgcc_s aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find -lutil aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find -lrt aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find -lpthread aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find -lm aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find -ldl aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find -lc aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find -lutil<\/code><\/pre>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441 \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430:<\/p>\n<pre><code class=\"bash\">mkdir -p lib scp nemo@192.168.2.15:\/usr\/lib\/libgcc_s.so .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libutil.so .\/lib scp nemo@192.168.2.15:\/usr\/lib\/librt.so .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libpthread.so .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libm.so .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libdl.so .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libc.so .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libutil.so .\/lib<\/code><\/pre>\n<p>\u0421\u043d\u043e\u0432\u0430 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0441\u043e\u0431\u0440\u0430\u0442\u044c, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u043e\u0432\u0443\u044e \u043f\u043e\u0440\u0446\u0438\u044e \u043e\u0448\u0438\u0431\u043e\u043a:<\/p>\n<pre><code class=\"bash\">aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: skipping incompatible \/lib\/libc.so.6 when searching for \/lib\/libc.so.6 aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find \/lib\/libc.so.6 aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: skipping incompatible \/usr\/lib\/libc_nonshared.a when searching for \/usr\/lib\/libc_nonshared.a aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find \/usr\/lib\/libc_nonshared.a aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find \/lib\/ld-linux-armhf.so.3<\/code><\/pre>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"bash\">scp nemo@192.168.2.15:\/lib\/libc.so.6 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libc_nonshared.a .\/lib scp nemo@192.168.2.15:\/lib\/ld-linux-armhf.so.3 .\/lib<\/code><\/pre>\n<p>\u0415\u0449\u0451 \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b <code>libc.so<\/code> (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u043b\u0438\u043d\u043a\u0435\u0440\u0430), \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u044c \u043b\u0438\u043d\u043a\u0435\u0440\u0443, \u0433\u0434\u0435 \u043d\u0430\u0434\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:<\/p>\n<p><em>lib\/libc.so<\/em>:<\/p>\n<pre><code class=\"rust\">\/* GNU ld script    Use the shared library, but some functions are only in    the static library, so try that secondarily.  *\/ OUTPUT_FORMAT(elf32-littlearm) GROUP ( libc.so.6 libc_nonshared.a  AS_NEEDED ( ld-linux-armhf.so.3 ) )<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0431\u043e\u0440\u043a\u0443 RPM-\u043f\u0430\u043a\u0435\u0442\u0430, \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c, \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043f\u043e\u0437\u0432\u043e\u043b\u044e \u0441\u0435\u0431\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043b\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435. \u041f\u0435\u0440\u0435\u0434 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 RPM-\u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u041e\u0421 \u0410\u0432\u0440\u043e\u0440\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f RPM-\u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440 \u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0418 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043f\u0430\u043a\u0435\u0442 \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0451\u0442 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0432\u044b\u0448\u0435 \u0432\u0441\u0435\u0433\u043e.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0448\u0438\u0431\u043e\u043a:<\/p>\n<details class=\"spoiler\">\n<summary>\u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0445<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"rust\">Desktop file ============ ERROR [\/usr\/share\/applications\/aurora-rust-helloworld.desktop] File is missing - cannot validate .desktop file  Paths ===== WARNING [\/usr\/share\/aurora-rust-helloworld] Directory not found ERROR [\/usr\/share\/applications\/aurora-rust-helloworld.desktop] File not found WARNING [\/usr\/share\/icons\/hicolor\/86x86\/apps\/aurora-rust-helloworld.png] File not found WARNING [\/usr\/share\/icons\/hicolor\/108x108\/apps\/aurora-rust-helloworld.png] File not found WARNING [\/usr\/share\/icons\/hicolor\/128x128\/apps\/aurora-rust-helloworld.png] File not found WARNING [\/usr\/share\/icons\/hicolor\/172x172\/apps\/aurora-rust-helloworld.png] File not found ERROR [\/usr\/share\/icons\/hicolor\/[0-9x]{5,9}\/apps\/aurora-rust-helloworld.png] No icons found! RPM must contain at least one icon, see: https:\/\/community.omprussia.ru\/doc\/software_development\/guidelines\/rpm_requirements  Libraries ========= ERROR [\/usr\/bin\/aurora-rust-helloworld] Cannot link to shared library: libutil.so.1  Symbols ======= ERROR [\/usr\/bin\/aurora-rust-helloworld] Binary does not link to 9__libc_start_main@GLIBC_2.4.  Requires ======== ERROR [libutil.so.1] Cannot require shared library: 'libutil.so.1' <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0427\u0442\u043e \u0436, \u0431\u0443\u0434\u0435\u043c \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u0441 \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443.<\/p>\n<h4>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b<\/h4>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0438\u043a\u043e\u043d\u043a\u0438 \u0438 \u044f\u0440\u043b\u044b\u043a (\u0444\u0430\u0439\u043b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c desktop) \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>.rpm<\/code>.<\/p>\n<p><em>.rpm\/aurora-rust-helloworld.desktop<\/em>:<\/p>\n<pre><code class=\"rust\">[Desktop Entry] Type=Application X-Nemo-Application-Type=silica-qt5 Icon=aurora-rust-helloworld Exec=aurora-rust-helloworld Name=Rust Hello-World<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 RPM-\u043f\u0430\u043a\u0435\u0442\u0430, \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 <code>Makefile<\/code>:<\/p>\n<details class=\"spoiler\">\n<summary>Makefile<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">.PHONY: all clean install prepare release rpm  all: \t@cargo build --target=armv7-unknown-linux-gnueabihf  clean: \t@rm -rvf target  install: \t@scp .\/target\/armv7-unknown-linux-gnueabihf\/release\/aurora-rust-helloworld nemo@192.168.2.15:\/home\/nemo\/ \t@scp .\/target\/armv7-unknown-linux-gnueabihf\/release\/rpmbuild\/RPMS\/armv7hl\/*.rpm nemo@192.168.2.15:\/home\/nemo\/  prepare: \t@rustup target add armv7-unknown-linux-gnueabihf \t@cargo install cargo-rpm  release: \t@cargo build --release --target=armv7-unknown-linux-gnueabihf  rpm: \t@mkdir -p .\/target\/armv7-unknown-linux-gnueabihf\/release\/rpmbuild\/SOURCES \t@cp -vf .rpm\/aurora-rust-helloworld.desktop .\/target\/armv7-unknown-linux-gnueabihf\/release\/rpmbuild\/SOURCES \t@cp -rvf .rpm\/icons .\/target\/armv7-unknown-linux-gnueabihf\/release\/rpmbuild\/SOURCES \t@cargo rpm build -v --target=armv7-unknown-linux-gnueabihf <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041e\u0431\u043d\u043e\u0432\u0438\u043c <code>aurora-rust-helloworld.spec<\/code>:<\/p>\n<details class=\"spoiler\">\n<summary>.rpm\/aurora-rust-helloworld.spec<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">%define __spec_install_post %{nil} %define __os_install_post %{_dbpath}\/brp-compress %define debug_package %{nil}  Name: aurora-rust-helloworld Summary: Rust example for Aurora OS Version: @@VERSION@@ Release: @@RELEASE@@%{?dist} License: MIT Group: Applications\/System Source0: %{name}-%{version}.tar.gz Source1: %{name}.desktop Source2: icons  BuildRoot: %{_tmppath}\/%{name}-%{version}-%{release}-root  %description %{summary}  %prep %setup -q  %install rm -rf %{buildroot} mkdir -p %{buildroot} cp -a * %{buildroot} mkdir -p %{buildroot}%{_datadir}\/applications cp -a %{SOURCE1} %{buildroot}%{_datadir}\/applications mkdir -p %{buildroot}%{_datadir}\/icons\/hicolor\/86x86\/apps mkdir -p %{buildroot}%{_datadir}\/icons\/hicolor\/108x108\/apps mkdir -p %{buildroot}%{_datadir}\/icons\/hicolor\/128x128\/apps mkdir -p %{buildroot}%{_datadir}\/icons\/hicolor\/172x172\/apps cp -a %{SOURCE2}\/86x86\/%{name}.png %{buildroot}%{_datadir}\/icons\/hicolor\/86x86\/apps cp -a %{SOURCE2}\/108x108\/%{name}.png %{buildroot}%{_datadir}\/icons\/hicolor\/108x108\/apps cp -a %{SOURCE2}\/128x128\/%{name}.png %{buildroot}%{_datadir}\/icons\/hicolor\/128x128\/apps cp -a %{SOURCE2}\/172x172\/%{name}.png %{buildroot}%{_datadir}\/icons\/hicolor\/172x172\/apps  %clean rm -rf %{buildroot}  %files %defattr(-,root,root,-) %{_bindir}\/* %{_datadir}\/applications\/%{name}.desktop %{_datadir}\/icons\/hicolor\/*\/apps\/%{name}.png <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c:<\/p>\n<pre><code class=\"bash\">make rpm<\/code><\/pre>\n<h4>\u0423\u0431\u0438\u0440\u0430\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0442 libutil.so<\/h4>\n<p>\u042f \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u0441\u043f\u043e\u0441\u043e\u0431\u0430, \u043a\u0430\u043a \u0443\u0431\u0435\u0434\u0438\u0442\u044c <code>cargo<\/code> \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043b\u0438\u043d\u043a\u0435\u0440\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043b\u044e\u0447 <code>-lutil<\/code>. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442-\u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0443 \u0434\u043b\u044f \u043b\u0438\u043d\u043a\u0435\u0440\u0430 \u0441 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0435\u0437\u043d\u0430\u0447\u0430\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439.<\/p>\n<p><em>lib\/libutil.so<\/em>:<\/p>\n<pre><code class=\"rust\">\/* GNU ld script    Dummy script to avoid dependency on libutil.so *\/ ASSERT(1, \"Unreachable\")<\/code><\/pre>\n<p>\u0414\u0430, \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435, \u0434\u0435\u043b\u0438\u0442\u0435\u0441\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445. <\/p>\n<h4>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0438\u043c\u0432\u043e\u043b __libc_start_main<\/h4>\n<p>\u041f\u0435\u0440\u0435\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <code>crt1.o<\/code>. \u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u0441 \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430:<\/p>\n<pre><code class=\"bash\">scp nemo@192.168.2.15:\/usr\/lib\/crt1.o .\/lib<\/code><\/pre>\n<p>\u0418 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043b\u0438\u043d\u043a\u0435\u0440\u0430:<\/p>\n<p><em>.cargo\/config.toml<\/em>:<\/p>\n<pre><code class=\"rust\">[target.armv7-unknown-linux-gnueabihf] rustflags = [\"-C\", \"link-args=-L lib lib\/crt1.o\"] linker = \"bin\/armv7hl-meego-linux-gnueabi-ld\"<\/code><\/pre>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438:<\/p>\n<pre><code class=\"rust\">undefined reference to `__libc_csu_fini' undefined reference to `__libc_csu_init'<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438 \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 <code>main.rs<\/code>:<\/p>\n<p><em>src\/main.rs<\/em>:<\/p>\n<pre><code class=\"rust\">#[no_mangle] pub extern \"C\" fn __libc_csu_init() {}  #[no_mangle] pub extern \"C\" fn __libc_csu_fini() {}  fn main() {     println!(\"Hello, world!\"); }<\/code><\/pre>\n<p>\u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u0433\u0440\u044f\u0437\u043d\u044b\u0439 \u0445\u0430\u043a, \u0437\u0430\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c RPM-\u043f\u0430\u043a\u0435\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f!<\/p>\n<p>\u041c\u043e\u043c\u0435\u043d\u0442 \u0438\u0441\u0442\u0438\u043d\u044b \u0431\u043b\u0438\u0437\u043e\u043a, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043d\u0430 \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0435 \u0438\u2026 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443:<\/p>\n<pre><code class=\"rust\">$ aurora-rust-helloworld -bash: \/usr\/bin\/aurora-rust-helloworld: \/usr\/lib\/ld.so.1: bad ELF  interpreter: No such file or directory<\/code><\/pre>\n<p>\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438:<\/p>\n<pre><code class=\"rust\">$ ldd \/usr\/bin\/aurora-rust-helloworld \tlinux-vdso.so.1 (0xbeff4000) \tlibgcc_s.so.1 =&gt; \/lib\/libgcc_s.so.1 (0xa707f000) \tlibrt.so.1 =&gt; \/lib\/librt.so.1 (0xa7069000) \tlibpthread.so.0 =&gt; \/lib\/libpthread.so.0 (0xa7042000) \tlibm.so.6 =&gt; \/lib\/libm.so.6 (0xa6fc6000) \tlibdl.so.2 =&gt; \/lib\/libdl.so.2 (0xa6fb3000) \tlibc.so.6 =&gt; \/lib\/libc.so.6 (0xa6e95000) \t\/usr\/lib\/ld.so.1 =&gt; \/lib\/ld-linux-armhf.so.3 (0xa70e7000)<\/code><\/pre>\n<p>\u0418 \u0432\u0438\u0434\u0438\u043c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0443 \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 <code>ld-linux-armhf.so.3<\/code>. \u0415\u0441\u043b\u0438 \u0440\u0435\u0448\u0430\u0442\u044c \u0432 \u043b\u043e\u0431, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 <code>\/usr\/lib\/ld.so.1<\/code> \u2192 <code>\/lib\/ld-linux-armhf.so.3<\/code> (\u0438 \u044d\u0442\u043e \u0434\u0430\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c). \u041d\u043e, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0442\u0430\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0442\u0440\u043e\u0433\u0438\u0439 RPM-\u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440 \u043d\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442 \u043d\u0438 \u043f\u0440\u0435\u0434(\u043f\u043e\u0441\u0442)-\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0432 .spec-\u0444\u0430\u0439\u043b\u0435, \u043d\u0438 \u0434\u0435\u043f\u043b\u043e\u0439 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>\/usr\/lib<\/code>. \u0412\u043e\u043e\u0431\u0449\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e, \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d <a href=\"https:\/\/community.omprussia.ru\/documentation\/software_development\/reference\/public_api.html\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u0414\u043e\u043b\u0433\u043e\u0435 \u0438 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0435 \u0433\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u0430\u043b\u043e, \u0447\u0442\u043e \u0443 \u043b\u0438\u043d\u043a\u0435\u0440\u0430 GCC \u0435\u0441\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0430\u043c \u043a\u043b\u044e\u0447 (<code>dynamic-linker<\/code>), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0441\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0443\u0436\u043d\u0443\u044e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c. \u041f\u0440\u0430\u0432\u0438\u043c <code>config.toml<\/code>:<\/p>\n<p><em>.cargo\/config.toml<\/em>:<\/p>\n<pre><code class=\"rust\">[target.armv7-unknown-linux-gnueabihf] rustflags = [\"-C\", \"link-args=-L lib lib\/crt1.o --dynamic-linker \/lib\/ld-linux-armhf.so.3\"] linker = \"bin\/armv7hl-meego-linux-gnueabi-ld\"<\/code><\/pre>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c RPM-\u043f\u0430\u043a\u0435\u0442, \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c, \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043d\u0430 \u043f\u043b\u0430\u043d\u0448\u0435\u0442, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0438 \u0441 \u0437\u0430\u043c\u0438\u0440\u0430\u043d\u0438\u0435\u043c \u0441\u0435\u0440\u0434\u0446\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c:<\/p>\n<pre><code class=\"bash\">$ aurora-rust-helloworld Hello, world!<\/code><\/pre>\n<h3>\u0427\u0430\u0441\u0442\u044c 2. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 GUI<\/h3>\n<p><strong>TL;DR<\/strong> \u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 <a href=\"https:\/\/github.com\/crocinc\/aurora-rust-gui\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a>. <\/p>\n<p>\u0412 \u0410\u0432\u0440\u043e\u0440\u0435 \u0432\u0441\u0451 \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u044f\u0437\u0430\u043d\u043e \u043d\u0430 Qt\/QML, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0434\u0443\u043c\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0440\u0435\u0439\u0442<a href=\"https:\/\/github.com\/woboq\/qmetaobject-rs\"> <u>qmetaobject<\/u><\/a>. \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u201c\u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435\u201d \u0441 \u041e\u0421 \u0438\u0434\u0451\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Qt \u0432\u0435\u0440\u0441\u0438\u0438 5.6.3, \u0430 <code>qmetaobject<\/code>, \u0441\u0443\u0434\u044f \u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e, \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0443\u043c Qt 5.8. \u0418 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u043a\u0440\u0435\u0439\u0442\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043e\u0448\u0438\u0431\u043a\u0430\u043c.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043f\u043e\u0448\u0451\u043b \u043f\u043e \u043f\u0443\u0442\u0438 \u0442\u043e\u0447\u0435\u0447\u043d\u044b\u0445 \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0439 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 <code>qmetaobject<\/code> \u2014&nbsp;\u0431\u043b\u0430\u0433\u043e, \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438, \u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0432 <code>aurora-rust-gui<\/code>.<\/p>\n<h4>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c<\/h4>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0443\u0442\u043e\u043c\u043b\u044f\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f, \u0441\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430 \u0435\u0449\u0451 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a:<\/p>\n<details class=\"spoiler\">\n<summary>\u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0445<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">scp nemo@192.168.2.15:\/usr\/lib\/libstdc++.so .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libQt5Core.so.5 .\/lib\/libQt5Core.so scp nemo@192.168.2.15:\/usr\/lib\/libQt5Gui.so.5 .\/lib\/libQt5Gui.so scp nemo@192.168.2.15:\/usr\/lib\/libQt5Qml.so.5 .\/lib\/libQt5Qml.so scp nemo@192.168.2.15:\/usr\/lib\/libQt5Quick.so.5 .\/lib\/libQt5Quick.so  scp nemo@192.168.2.15:\/usr\/lib\/libGLESv2.so.2 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libpng16.so.16 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libz.so.1 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libicui18n.so.63 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libicuuc.so.63 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libpcre16.so.0 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libglib-2.0.so.0 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libsystemd.so.0 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libQt5Network.so.5 .\/lib  scp nemo@192.168.2.15:\/lib\/libresolv.so.2 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libhybris-common.so.1 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libicudata.so.63 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libpcre.so.1 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libselinux.so.1 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/liblzma.so.5 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libgcrypt.so.11 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libgpg-error.so.0 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libcap.so.2 .\/lib  scp nemo@192.168.2.15:\/usr\/lib\/libsailfishapp.so.1 .\/lib\/libsailfishapp.so scp nemo@192.168.2.15:\/usr\/lib\/libmdeclarativecache5.so.0 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libmlite5.so.0 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libdconf.so.1 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libgobject-2.0.so.0 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libQt5DBus.so.5 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libdconf.so.1 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libffi.so.6 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libdbus-1.so.3 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libgio-2.0.so.0 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libgmodule-2.0.so.0 .\/lib<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0410 \u0435\u0449\u0435 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0434\u0443\u0442 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 Aurora SDK:<\/p>\n<ul>\n<li>\n<p><code>AuroraOS\/mersdk\/targets\/AuroraOS-3.2.2.21-cert-armv7hl\/usr\/include\/qt5<\/code> \u2192 <code>include\/qt5<\/code><\/p>\n<\/li>\n<li>\n<p><code>AuroraOS\/mersdk\/targets\/AuroraOS-3.2.2.21-cert-armv7hl\/usr\/include\/sailfishapp<\/code> \u2192 <code>include\/sailfishapp<\/code><\/p>\n<\/li>\n<li>\n<p><code>AuroraOS\/mersdk\/targets\/AuroraOS-3.2.2.21-cert-armv7hl\/usr\/include\/GLES3<\/code> \u2192 <code>include\/GLES3<\/code><\/p>\n<\/li>\n<li>\n<p><code>AuroraOS\/mersdk\/targets\/AuroraOS-3.2.2.21-cert-armv7hl\/usr\/include\/KHR<\/code> \u2192 <code>include\/KHR<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 <code>build.rs<\/code> \u0438 \u0443\u043a\u0430\u0436\u0435\u043c \u0435\u0433\u043e \u0432 <code>Cargo.toml<\/code>.<\/p>\n<p><em>build.rs<\/em>:<\/p>\n<pre><code class=\"rust\">fn main() {     let include_path = \"include\";     let qt_include_path = \"include\/qt5\";     let sailfish_include_path = \"include\/sailfishapp\";     let library_path = \"lib\";      let mut config = cpp_build::Config::new();     config         .include(include_path)         .include(qt_include_path)         .include(sailfish_include_path)         .opt_level(2)         .flag(\"-std=gnu++1y\")         .flag(\"-mfloat-abi=hard\")         .flag(\"-mfpu=neon\")         .flag(\"-mthumb\")         .build(\"src\/main.rs\");      println!(\"cargo:rustc-link-search={}\", library_path);     println!(\"cargo:rustc-link-lib=sailfishapp\");     println!(\"cargo:rustc-link-lib=Qt5Gui\");     println!(\"cargo:rustc-link-lib=Qt5Core\");     println!(\"cargo:rustc-link-lib=Qt5Quick\");     println!(\"cargo:rustc-link-lib=Qt5Qml\"); }<\/code><\/pre>\n<p><em>Cargo.toml<\/em>:<\/p>\n<pre><code class=\"rust\">[package] # ... build = \"build.rs\"  [dependencies] cpp = \"0.5.6\"  [build-dependencies] cpp_build = \"0.5.6\"  #...<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043e\u0437\u044c\u043c\u0451\u043c\u0441\u044f \u0437\u0430 \u0441\u0430\u043c\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0417\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 <code>SailfishApp<\/code> \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0410\u0432\u0440\u043e\u0440\u044b, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u043d\u0430 C++.<\/p>\n<p><em>src\/main.rs<\/em>:<\/p>\n<pre><code class=\"rust\">#[macro_use] extern crate cpp;  mod qbytearray; mod qstring; mod qurl; mod sailfishapp;  use sailfishapp::SailfishApp;  #[no_mangle] pub extern \"C\" fn __libc_csu_init() {}  #[no_mangle] pub extern \"C\" fn __libc_csu_fini() {}  fn main() {     let mut app = SailfishApp::new();     app.set_source(\"main.qml\".into());     app.show();     app.exec(); }<\/code><\/pre>\n<p><code>SailfishApp<\/code> \u2014 \u044d\u0442\u043e \u043f\u043e \u0441\u0443\u0442\u0438 \u043e\u0431\u0432\u044f\u0437\u043a\u0430 (\u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0438) \u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443 \u043d\u0430 C++. \u0411\u0435\u0440\u0451\u043c \u0437\u0430 \u043e\u0431\u0440\u0430\u0437\u0435\u0446 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443<a href=\"https:\/\/docs.rs\/qmetaobject\/0.1.4\/qmetaobject\/qtdeclarative\/struct.QmlEngine.html\"> <u>QmlEngine<\/u><\/a> \u0438\u0437 \u043a\u0440\u0435\u0439\u0442\u0430 <code>qmetaobject<\/code>.<\/p>\n<details class=\"spoiler\">\n<summary>src\/sailfishapp.rs<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"rust\">use crate::qstring::QString;  cpp! {{     #include &lt;sailfishapp.h&gt;     #include &lt;QtCore\/QDebug&gt;     #include &lt;QtGui\/QGuiApplication&gt;     #include &lt;QtQuick\/QQuickView&gt;     #include &lt;QtQml\/QQmlEngine&gt;     #include &lt;memory&gt;      struct SailfishAppHolder {         std::unique_ptr&lt;QGuiApplication&gt; app;         std::unique_ptr&lt;QQuickView&gt; view;          SailfishAppHolder() {             qDebug() &lt;&lt; \"SailfishAppHolder::SailfishAppHolder()\";             int argc = 1;             char *argv[] = { \"aurora-rust-gui\" };             app.reset(SailfishApp::application(argc, argv));             view.reset(SailfishApp::createView());             view-&gt;engine()-&gt;addImportPath(\"\/usr\/share\/aurora-rust-gui\/qml\");         }     }; }}  cpp_class!(     pub unsafe struct SailfishApp as \"SailfishAppHolder\" );  impl SailfishApp {     \/\/\/ Creates a new SailfishApp.     pub fn new() -&gt; Self {         cpp!(unsafe [] -&gt; SailfishApp as \"SailfishAppHolder\" {             qDebug() &lt;&lt; \"SailfishApp::new()\";             return SailfishAppHolder();         })     }      \/\/\/ Sets the main QML (see QQuickView::setSource for details).     pub fn set_source(&amp;mut self, url: QString) {         cpp!(unsafe [self as \"SailfishAppHolder *\", url as \"QString\"] {             const auto full_url = QString(\"\/usr\/share\/aurora-rust-gui\/qml\/%1\").arg(url);             qDebug() &lt;&lt; \"SailfishApp::set_source()\" &lt;&lt; full_url;             self-&gt;view-&gt;setSource(full_url);         });     }      \/\/\/ Shows the main view.     pub fn show(&amp;self) {         cpp!(unsafe [self as \"SailfishAppHolder *\"] {             qDebug() &lt;&lt; \"SailfishApp::show()\";             self-&gt;view-&gt;showFullScreen();         })     }      \/\/\/ Launches the application.     pub fn exec(&amp;self) {         cpp!(unsafe [self as \"SailfishAppHolder *\"] {             qDebug() &lt;&lt; \"SailfishApp::exec()\";             self-&gt;app-&gt;exec();         })     } } <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0411\u0438\u043d\u0434\u0438\u043d\u0433\u0438 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 <code>QByteArray<\/code>, <code>QString<\/code>, <code>QUrl<\/code> \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0438\u0437 \u0442\u043e\u0433\u043e \u0436\u0435 <code>qmetaobject<\/code> \u0438 \u0440\u0430\u0441\u0444\u0430\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u043c\u044b\u043c \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c. \u0417\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u0445 \u043d\u0435 \u0431\u0443\u0434\u0443, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e, \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432<a href=\"https:\/\/github.com\/crocinc\/aurora-rust-gui\/tree\/master\/src\"> <u>\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043d\u0430 GitHub<\/u><\/a>.<\/p>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <code>sailfishapp.h<\/code>, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0438\u0441\u043a\u0430\u043b \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b Qt \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445:<\/p>\n<p><em>include\/sailfishapp\/sailfishapp.h<\/em>:<\/p>\n<pre><code class=\"cpp\">\/\/ ...  #ifdef QT_QML_DEBUG #include &lt;QtQuick&gt; #endif  #include &lt;QtCore\/QtGlobal&gt;  \/\/ \u0411\u044b\u043b\u043e `#include &lt;QtGlobal&gt;` #include &lt;QtCore\/QUrl&gt;      \/\/ \u0411\u044b\u043b\u043e `#include &lt;QUrl&gt;`  class QGuiApplication; class QQuickView; class QString;  \/\/ ...<\/code><\/pre>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b QML \u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0438\u0445 \u0432 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 RPM.<\/p>\n<details class=\"spoiler\">\n<summary>\u0432\u0441\u0435 \u0437\u0434\u0435\u0441\u044c<\/summary>\n<div class=\"spoiler__content\">\n<p><em>qml\/main.qml<\/em>:<\/p>\n<pre><code class=\"json\">import QtQuick 2.6 import Sailfish.Silica 1.0  ApplicationWindow {     cover: Qt.resolvedUrl(\"cover.qml\")      initialPage: Page {         allowedOrientations: Orientation.LandscapeMask          Label {             anchors.centerIn: parent             text: \"Hello, Aurora!\"         }      }  }<\/code><\/pre>\n<p><em>qml\/cover.qml<\/em>:<\/p>\n<pre><code class=\"json\">import QtQuick 2.6 import Sailfish.Silica 1.0  CoverBackground {     Rectangle {         id: background          anchors.fill: parent         color: \"blue\"          Label {             id: label              anchors.centerIn: parent             text: \"Rust GUI\"             color: \"white\"         }      }      CoverActionList {         id: coverAction          CoverAction {             iconSource: \"image:\/\/theme\/icon-cover-cancel\"             onTriggered: Qt.quit()         }      }  }<\/code><\/pre>\n<p><em>.rpm\/aurora-rust-gui.spec<\/em>:<\/p>\n<pre><code class=\"rust\"># ... Source3: qml # ...  %install # ... mkdir -p %{buildroot}%{_datadir}\/%{name} cp -ra %{SOURCE3} %{buildroot}%{_datadir}\/%{name}\/qml  %clean rm -rf %{buildroot}  %files # ... %{_datadir}\/%{name}\/qml<\/code><\/pre>\n<p><em>Makefile<\/em>:<\/p>\n<pre><code class=\"bash\"># ... rpm: \t# ... \t@cp -rvf qml .\/target\/armv7-unknown-linux-gnueabihf\/release\/rpmbuild\/SOURCES # ...<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c:<\/p>\n<pre><code class=\"bash\">make clean make release make rpm<\/code><\/pre>\n<p>\u041f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c, \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0432\u0443\u0430\u043b\u044f:<\/p>\n<pre><code class=\"rust\">$ devel-su Password: # pkcon install-local .\/aurora-rust-gui-0.1.0-1.armv7hl.rpm Installing files Testing changes Finished Installing files Starting Resolving dependencies Installing packages Downloading packages Installing packages Finished Downloaded  \taurora-rust-gui-0.1.0-1.armv7hl (PK_TMP_DIR)          \t\tRust GUI example for Aurora OS Installed   \taurora-rust-gui-0.1.0-1.armv7hl (PK_TMP_DIR)             \t\tRust GUI example for Aurora OS # exit $ aurora-rust-gui [D] __cpp_closure_14219197022164792912_impl:33 - SailfishApp::new() [D] SailfishAppHolder::SailfishAppHolder:15 - SailfishAppHolder::SailfishAppHolder() [D] unknown:0 - Using Wayland-EGL library \"libpq_cust_base.so\" not found [D] __cpp_closure_16802020016530731597:42 - SailfishApp::set_source() \"\/usr\/share\/aurora-rust-gui\/qml\/main.qml\" [W] unknown:0 - Could not find any zN.M subdirs! [W] unknown:0 - Theme dir \"\/usr\/share\/themes\/sailfish-default\/meegotouch\/z1.0\/\" does not exist [W] unknown:0 - Theme dir \"\/usr\/share\/themes\/sailfish-default\/meegotouch\/\" does not exist [D] onCompleted:432 - Warning: specifying an object instance for initialPage is sub-optimal - prefer to use a Component [D] __cpp_closure_12585295123509486988:50 - SailfishApp::show() [D] __cpp_closure_15029454612933909268:59 - SailfishApp::exec()<\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0430\u043a\u0443\u0440\u0441\u043e\u0432:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/acc\/03a\/b47\/acc03ab47edbb16005f365d6d710ff46.png\" alt=\" \u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0442\u043e\u043b \u0441 \u044f\u0440\u043b\u044b\u043a\u043e\u043c \" title=\" \u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0442\u043e\u043b \u0441 \u044f\u0440\u043b\u044b\u043a\u043e\u043c \" width=\"1600\" height=\"1000\"><figcaption> \u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0442\u043e\u043b \u0441 \u044f\u0440\u043b\u044b\u043a\u043e\u043c <\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/747\/d32\/efc\/747d32efc5a768dbe4823a9cc24d0088.png\" alt=\"\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\" title=\"\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\" width=\"1600\" height=\"1000\"><figcaption>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b6d\/e03\/61f\/b6de0361f9e1213b24c6778f567f1f84.png\" alt=\" \u041f\u0430\u043d\u0435\u043b\u044c \u0437\u0430\u0434\u0430\u0447\" title=\" \u041f\u0430\u043d\u0435\u043b\u044c \u0437\u0430\u0434\u0430\u0447\" width=\"1600\" height=\"1000\"><figcaption> \u041f\u0430\u043d\u0435\u043b\u044c \u0437\u0430\u0434\u0430\u0447<\/figcaption><\/figure>\n<h4>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0448\u0442\u0440\u0438\u0445\u0438<\/h4>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043f\u043e SSH, \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044f\u0440\u043b\u044b\u043a\u0430. \u041f\u0443\u0442\u0451\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0434\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b <code>main<\/code> (RPM-\u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u0432\u0430\u043b \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0441\u0447\u0451\u0442, \u043d\u043e \u043d\u0435\u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e\u0435).<\/p>\n<p>\u0421\u0435\u0440\u0438\u044f \u043f\u0440\u043e\u0431 \u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043a\u043b\u044e\u0447 \u043b\u0438\u043d\u043a\u0435\u0440\u0430: <code>-export-dynamic<\/code>.<\/p>\n<p><em>.cargo\/config.toml<\/em>:<\/p>\n<pre><code class=\"rust\">[target.armv7-unknown-linux-gnueabihf] rustflags = [\"-C\", \"link-args=-L lib lib\/crt1.o -rpath lib --dynamic-linker \/lib\/ld-linux-armhf.so.3 -export-dynamic\"] linker = \"bin\/armv7hl-meego-linux-gnueabi-ld\"<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a, \u043a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f.<\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Rust \u0432 \u043f\u0440\u043e\u0434\u0435, \u0435\u0449\u0451 \u043d\u0430\u0434\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435\u043c\u0430\u043b\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432. \u041a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u044f \u043f\u0440\u0435\u0434\u0432\u0438\u0436\u0443 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u044b\u0445 \u043a\u0440\u0435\u0439\u0442\u043e\u0432, \u0438\u0437\u0432\u0435\u0447\u043d\u044b\u0435 \u0442\u0430\u043d\u0446\u044b \u0441 \u0431\u0443\u0431\u043d\u043e\u043c \u0432\u043e\u043a\u0440\u0443\u0433 \u0441\u0435\u0433\u0444\u043e\u043b\u0442\u043e\u0432 \u043f\u0440\u0438 FFI-\u0432\u044b\u0437\u043e\u0432\u0430\u0445, \u0443\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f Qt \u0438 Rust. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0435\u0440\u043f\u043d\u0443\u0442\u044c \u0438\u0437 <a href=\"https:\/\/woboq.com\/blog\/qmetaobject-from-rust.html\"><u>\u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0442 \u0430\u0432\u0442\u043e\u0440\u0430 qmetaobject-rs<\/u><\/a>. \u041d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430, \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.<\/p>\n<p>\u041f\u043b\u044e\u0441 \u043a \u044d\u0442\u043e\u043c\u0443, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Qt-\u043e\u0432\u0441\u043a\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u044b, \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437 \u043d\u0438\u0445 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0438.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 Rust, \u0441 \u0435\u0433\u043e \u043c\u043e\u0449\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0442\u0438\u043f\u043e\u0432, \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e, \u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u0441\u0430\u043c\u044b\u043c \u043b\u0443\u0447\u0448\u0438\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c \u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u0432\u0441\u0435\u043c\u0438 \u0442\u0435\u043c\u0438 \u0432\u0435\u0449\u0430\u043c\u0438 \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 <a href=\"https:\/\/insights.stackoverflow.com\/survey\/2020#technology-most-loved-dreaded-and-wanted-languages-loved\"><u>\u043c\u044b \u0435\u0433\u043e \u0442\u0430\u043a \u043b\u044e\u0431\u0438\u043c<\/u><\/a>.<\/p>\n<p>\u0411\u0443\u0434\u0443 \u0440\u0430\u0434 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c \u0438 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f\u043c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445. \u0418 \u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043b\u0430\u0439\u043a, \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435\u0441\u044c \u043d\u0430 \u043a\u0430\u043d\u0430\u043b \ud83d\ude42<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/croc\/blog\/544900\/\"> https:\/\/habr.com\/ru\/company\/croc\/blog\/544900\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0428\u0430\u043c\u0438\u043b\u044c, \u044f \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u041a\u0420\u041e\u041a. \u041f\u043e\u043c\u0438\u043c\u043e \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0447\u0435\u0433\u043e \u043c\u044b \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f \u0435\u0449\u0451 \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0410\u0432\u0440\u043e\u0440\u0430, \u0435\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0446\u0435\u043d\u0442\u0440 \u043a\u043e\u043c\u043f\u0435\u0442\u0435\u043d\u0446\u0438\u0439 \u043f\u043e \u043d\u0435\u0439. <\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u044b, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043f\u043e\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0432\u044f\u0437\u043a\u0443 C++ \u0438 QML, \u043d\u043e \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043f\u043e\u0434\u0441\u0435\u0432 \u043d\u0430 &#171;\u0440\u0436\u0430\u0432\u0443\u044e&#187; \u0438\u0433\u043b\u0443 Rust, \u044f \u043d\u0435 \u043c\u043e\u0433 \u043d\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043b\u044e\u0431\u0438\u043c\u044b\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043e\u043f\u0438\u0448\u0443 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043f\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Rust, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0439 \u041e\u0421. \u0421\u0440\u0430\u0437\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u044e\u0441\u044c, \u0447\u0442\u043e \u043b\u0435\u0433\u043a\u0438\u0445 \u043f\u0443\u0442\u0435\u0439 \u044f \u043d\u0435 \u0438\u0441\u043a\u0430\u043b \u2014 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u043d\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0410\u0432\u0440\u043e\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0430 \u043e\u0433\u043e\u043d\u044c\u043a\u0430 \u0432 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u041d\u043e, \u043a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u0430\u044f \u041e\u0421, \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u0430\u0440\u0434\u043a\u043e\u0440.<\/p>\n<p>\u041f\u0430\u0440\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0443 \u043c\u0435\u043d\u044f \u0443\u0448\u043b\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u0440\u0435\u0447\u044c \u043e \u043d\u0451\u043c \u043f\u043e\u0439\u0434\u0451\u0442 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438), \u0435\u0449\u0451 \u043f\u0430\u0440\u0430 \u0434\u043d\u0435\u0439 \u2014 \u043d\u0430 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c, \u0432\u044b\u0431\u043e\u0440 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 GUI (\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0432\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f). \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u201c\u0441\u043a\u0435\u043b\u0435\u0442\u201d \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043a \u0441\u0431\u043e\u0440\u043a\u0435 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u0442\u044c \u201c\u043c\u044f\u0441\u043e\u201d.<\/p>\n<h3>\u0413\u043e\u0442\u043e\u0432\u0438\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0418\u0442\u0430\u043a, \u0440\u0430\u0431\u043e\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u0435\u0441\u0442\u0438\u0441\u044c \u0438\u0437-\u043f\u043e\u0434 Ubuntu Linux \u0441 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c Rust. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 Aquarius NS220 \u0441 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u041e\u0421 \u0410\u0432\u0440\u043e\u0440\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 (\u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438) \u0432\u0435\u0440\u0441\u0438\u0438 3.2.2 \u0441 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c \u0440\u0435\u0436\u0438\u043c\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u044f\u0437\u044c \u043f\u043e SSH, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043a\u0440\u043e\u0441\u0441\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b ARM, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u043c \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0435 \u0441\u0442\u043e\u0438\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440.<\/p>\n<pre><code class=\"bash\">sudo apt install -y g++-arm-linux-gnueabihf rustup target add armv7-unknown-linux-gnueabihf<\/code><\/pre>\n<p>\u0412 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u041e\u0421 \u0410\u0432\u0440\u043e\u0440\u0430 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 \u0438\u0437 \u0441\u043e\u0441\u0442\u0430\u0432\u0430 Aurora Certified SDK \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <code>ompcert-cli<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u043a\u0435\u0442 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 RPM. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0440\u0430\u0437\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443<a href=\"https:\/\/github.com\/iqlusioninc\/cargo-rpm\"> <u>cargo-rpm<\/u><\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u044c\u043c\u0451\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u0432\u0441\u044e \u0440\u0443\u0442\u0438\u043d\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 RPM-\u043f\u0430\u043a\u0435\u0442:<\/p>\n<pre><code class=\"bash\">cargo install cargo-rpm<\/code><\/pre>\n<p>\u0421\u0430\u043c\u0443 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f RPM-\u043f\u0430\u043a\u0435\u0442\u0430 \u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443, \u043e\u043d\u0430 \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432 <a href=\"https:\/\/community.omprussia.ru\/documentation\/software_development\/certified_os\/package_signing.html\"><u>\u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u0445<\/u><\/a> \u041e\u0421 \u0410\u0432\u0440\u043e\u0440\u0430.<\/p>\n<p>Aurora SDK \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c <a href=\"https:\/\/sdk-repo.omprussia.ru\/sdk\/installers-cert\/3.2.2\/\"><u>\u0441 \u0441\u0430\u0439\u0442\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f<\/u><\/a>.<\/p>\n<h3>\u0427\u0430\u0441\u0442\u044c 1. Hello. World<\/h3>\n<p><strong>TL;DR<\/strong> \u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 <a href=\"https:\/\/github.com\/crocinc\/aurora-rust-helloworld\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a> \u043d\u0430 \u0413\u0438\u0442\u0445\u0430\u0431\u0435.<\/p>\n<h4>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442<\/h4>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0443\u0441\u0442\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 Rust:<\/p>\n<pre><code class=\"bash\">cargo new aurora-rust-helloworld<\/code><\/pre>\n<p>\u041f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c .spec \u0444\u0430\u0439\u043b \u0434\u043b\u044f RPM-\u043f\u0430\u043a\u0435\u0442\u0430:<\/p>\n<pre><code>cargo rpm init<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438, \u0447\u0442\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u0432 <code>Cargo.toml<\/code>, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u0445:<\/p>\n<p><em>Cargo.toml<\/em>:<\/p>\n<pre><code class=\"rust\">[package] name = \"aurora-rust-helloworld\" version = \"0.1.0\" authors = [\"Shamil Yakupov &lt;syakupov@croc.ru&gt;\"] edition = \"2018\" description = \"Rust example for Aurora OS\" license = \"MIT\"<\/code><\/pre>\n<p>\u0417\u0430\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u0432 \u043f\u0430\u043f\u043a\u0443 <code>.cargo<\/code> \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043b\u0438\u043d\u043a\u0435\u0440\u0430 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043f\u043e\u0434 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 ARM:<\/p>\n<p><em>.cargo\/config.toml<\/em>:<\/p>\n<pre><code class=\"rust\">[target.armv7-unknown-linux-gnueabihf] linker = \"arm-linux-gnueabihf-gcc\"<\/code><\/pre>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c RPM-\u043f\u0430\u043a\u0435\u0442:<\/p>\n<pre><code class=\"bash\">cargo rpm init cargo rpm build -v --target=armv7-unknown-linux-gnueabihf<\/code><\/pre>\n<p>\u0412\u0441\u0451 \u0441\u043e\u0431\u0440\u0430\u043b\u043e\u0441\u044c, \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u043c RPM \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 <code>target\/armv7-unknown-linux-gnueabihf\/release\/rpmbuild\/RPMS\/armv7hl<\/code>, \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e, \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043d\u0430 \u043f\u043b\u0430\u043d\u0448\u0435\u0442 \u0438 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c:<\/p>\n<pre><code class=\"rust\">$ devel-su Password: # pkcon install-local .\/aurora-rust-helloworld-0.1.0-1.armv7hl.rpm<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443:<\/p>\n<pre><code class=\"bash\">Fatal error: nothing provides libc.so.6(GLIBC_2.32) needed by  aurora-rust-helloworld-0.1.0-1.armv7hl<\/code><\/pre>\n<p>\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0435\u0440\u0441\u0438\u044e <code>glibc<\/code> \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435, \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u044f\u0432\u043d\u043e \u043d\u0438\u0436\u0435 \u0442\u043e\u0439, \u0447\u0442\u043e \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"rust\">$ ldd --version ldd (GNU libc) 2.28<\/code><\/pre>\n<p>\u0427\u0442\u043e \u0436, \u0442\u043e\u0433\u0434\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441 \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430, \u0437\u0430\u043a\u0438\u043d\u0443\u0442\u044c \u0438\u0445 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>lib<\/code> \u0438 \u0441\u043b\u0438\u043d\u043a\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u0438\u043c\u0438. \u0414\u043b\u044f \u0432\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u0438\u043d\u043a\u0435\u0440\u043e\u043c, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u043c \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 Aurora SDK, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043a\u0438\u043d\u0435\u043c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>bin<\/code>. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b. \u041c\u0435\u043d\u044f\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 <code>.cargo\/config.toml<\/code>:<\/p>\n<pre><code class=\"rust\">[target.armv7-unknown-linux-gnueabihf] rustflags = [\"-C\", \"link-args=-L lib\"] linker = \"bin\/armv7hl-meego-linux-gnueabi-ld\"<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043e\u0431\u0440\u0430\u0442\u044c:<\/p>\n<pre><code class=\"bash\">cargo build --release --target=armv7-unknown-linux-gnueabihf<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438:<\/p>\n<pre><code class=\"rust\">aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find -lgcc_s aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find -lutil aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find -lrt aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find -lpthread aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find -lm aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find -ldl aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find -lc aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find -lutil<\/code><\/pre>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441 \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430:<\/p>\n<pre><code class=\"bash\">mkdir -p lib scp nemo@192.168.2.15:\/usr\/lib\/libgcc_s.so .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libutil.so .\/lib scp nemo@192.168.2.15:\/usr\/lib\/librt.so .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libpthread.so .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libm.so .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libdl.so .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libc.so .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libutil.so .\/lib<\/code><\/pre>\n<p>\u0421\u043d\u043e\u0432\u0430 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0441\u043e\u0431\u0440\u0430\u0442\u044c, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u043e\u0432\u0443\u044e \u043f\u043e\u0440\u0446\u0438\u044e \u043e\u0448\u0438\u0431\u043e\u043a:<\/p>\n<pre><code class=\"bash\">aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: skipping incompatible \/lib\/libc.so.6 when searching for \/lib\/libc.so.6 aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find \/lib\/libc.so.6 aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: skipping incompatible \/usr\/lib\/libc_nonshared.a when searching for \/usr\/lib\/libc_nonshared.a aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find \/usr\/lib\/libc_nonshared.a aurora-rust-helloworld\/bin\/armv7hl-meego-linux-gnueabi-ld: cannot find \/lib\/ld-linux-armhf.so.3<\/code><\/pre>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"bash\">scp nemo@192.168.2.15:\/lib\/libc.so.6 .\/lib scp nemo@192.168.2.15:\/usr\/lib\/libc_nonshared.a .\/lib scp nemo@192.168.2.15:\/lib\/ld-linux-armhf.so.3 .\/lib<\/code><\/pre>\n<p>\u0415\u0449\u0451 \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b <code>libc.so<\/code> (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u043b\u0438\u043d\u043a\u0435\u0440\u0430), \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u044c \u043b\u0438\u043d\u043a\u0435\u0440\u0443, \u0433\u0434\u0435 \u043d\u0430\u0434\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:<\/p>\n<p><em>lib\/libc.so<\/em>:<\/p>\n<pre><code class=\"rust\">\/* GNU ld script    Use the shared library, but some functions are only in    the static library, so try that secondarily.  *\/ OUTPUT_FORMAT(elf32-littlearm) GROUP ( libc.so.6 libc_nonshared.a  AS_NEEDED ( ld-linux-armhf.so.3 ) )<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0431\u043e\u0440\u043a\u0443 RPM-\u043f\u0430\u043a\u0435\u0442\u0430, \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c, \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043f\u043e\u0437\u0432\u043e\u043b\u044e \u0441\u0435\u0431\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043b\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435. \u041f\u0435\u0440\u0435\u0434 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 RPM-\u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u041e\u0421 \u0410\u0432\u0440\u043e\u0440\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f RPM-\u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440 \u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0418 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043f\u0430\u043a\u0435\u0442 \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0451\u0442 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0432\u044b\u0448\u0435 \u0432\u0441\u0435\u0433\u043e.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0448\u0438\u0431\u043e\u043a:<\/p>\n<details class=\"spoiler\">\n<summary>\u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0445<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"rust\">Desktop file ============ ERROR [\/usr\/share\/applications\/aurora-rust-helloworld.desktop] File is missing - cannot validate .desktop file  Paths ===== WARNING [\/usr\/share\/aurora-rust-helloworld] Directory not found ERROR [\/usr\/share\/applications\/aurora-rust-helloworld.desktop] File not found WARNING [\/usr\/share\/icons\/hicolor\/86x86\/apps\/aurora-rust-helloworld.png] File not found WARNING [\/usr\/share\/icons\/hicolor\/108x108\/apps\/aurora-rust-helloworld.png] File not found WARNING [\/usr\/share\/icons\/hicolor\/128x128\/apps\/aurora-rust-helloworld.png] File not found WARNING [\/usr\/share\/icons\/hicolor\/172x172\/apps\/aurora-rust-helloworld.png] File not found ERROR [\/usr\/share\/icons\/hicolor\/[0-9x]{5,9}\/apps\/aurora-rust-helloworld.png] No icons found! RPM must contain at least one icon, see: https:\/\/community.omprussia.ru\/doc\/software_development\/guidelines\/rpm_requirements  Libraries ========= ERROR [\/usr\/bin\/aurora-rust-helloworld] Cannot link to shared library: libutil.so.1  Symbols ======= ERROR [\/usr\/bin\/aurora-rust-helloworld] Binary does not link to 9__libc_start_main@GLIBC_2.4.  Requires ======== ERROR [libutil.so.1] Cannot require shared library: 'libutil.so.1' <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0427\u0442\u043e \u0436, \u0431\u0443\u0434\u0435\u043c \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u0441 \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443.<\/p>\n<h4>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b<\/h4>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0438\u043a\u043e\u043d\u043a\u0438 \u0438 \u044f\u0440\u043b\u044b\u043a (\u0444\u0430\u0439\u043b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c desktop) \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>.rpm<\/code>.<\/p>\n<p><em>.rpm\/aurora-rust-helloworld.desktop<\/em>:<\/p>\n<pre><code class=\"rust\">[Desktop Entry] Type=Application X-Nemo-Application-Type=silica-qt5 Icon=aurora-rust-helloworld Exec=aurora-rust-helloworld Name=Rust Hello-World<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 RPM-\u043f\u0430\u043a\u0435\u0442\u0430, \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 <code>Makefile<\/code>:<\/p>\n<details class=\"spoiler\">\n<summary>Makefile<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">.PHONY: all clean install prepare release rpm  all: \t@cargo build --target=armv7-unknown-linux-gnueabihf  clean: \t@rm -rvf target  install: \t@scp .\/target\/armv7-unknown-linux-gnueabihf\/release\/aurora-rust-helloworld nemo@192.168.2.15:\/home\/nemo\/ \t@scp .\/target\/armv7-unknown-linux-gnueabihf\/release\/rpmbuild\/RPMS\/armv7hl\/*.rpm nemo@192.168.2.15:\/home\/nemo\/  prepare: \t@rustup target add armv7-unknown-linux-gnueabihf \t@cargo install cargo-rpm  release: \t@cargo build --release --target=armv7-unknown-linux-gnueabihf  rpm: \t@mkdir -p .\/target\/armv7-unknown-linux-gnueabihf\/release\/rpmbuild\/SOURCES \t@cp -vf .rpm\/aurora-rust-helloworld.desktop .\/target\/armv7-unknown-linux-gnueabihf\/release\/rpmbuild\/SOURCES \t@cp -rvf .rpm\/icons .\/target\/armv7-unknown-linux-gnueabihf\/release\/rpmbuild\/SOURCES \t@cargo rpm build -v --target=armv7-unknown-linux-gnueabihf <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041e\u0431\u043d\u043e\u0432\u0438\u043c <code>aurora-rust-helloworld.spec<\/code>:<\/p>\n<details class=\"spoiler\">\n<summary>.rpm\/aurora-rust-helloworld.spec<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">%define __spec_install_post %{nil} %define __os_install_post %{_dbpath}\/brp-compress %define debug_package %{nil}  Name: aurora-rust-helloworld Summary: Rust example for Aurora OS Version: @@VERSION@@ Release: @@RELEASE@@%{?dist} License: MIT Group: Applications\/System Source0: %{name}-%{version}.tar.gz Source1: %{name}.desktop Source2: icons  BuildRoot: %{_tmppath}\/%{name}-%{version}-%{release}-root  %description %{summary}  %prep %setup -q  %install rm -rf %{buildroot} mkdir -p %{buildroot} cp -a * %{buildroot} mkdir -p<\/code><\/pre>\n<\/div>\n<\/details>\n<p><\/br><\/p>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-318862","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/318862","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=318862"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/318862\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=318862"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=318862"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=318862"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}