{"id":333971,"date":"2022-06-02T15:00:36","date_gmt":"2022-06-02T15:00:36","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=333971"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=333971","title":{"rendered":"<span>Linux \u0438 Tiny\u0421C \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/669196\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gi\/xe\/jc\/gixejcdwdw7g525uce-w6lopzic.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gi\/xe\/jc\/gixejcdwdw7g525uce-w6lopzic.png\"\/><\/div>\n<p><\/a><br \/>  \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e <a href=\"http:\/\/Clang%20In%20Browser\">Clang in Browser<\/a> \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u0435\u0442, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0432\u0441\u0435 \u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0434\u0438\u0438. \u042f \u0436\u0435 \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0432 WASM \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u043f\u043e\u0439\u0442\u0438 \u0441\u0432\u043e\u0438\u043c \u0438\u0437\u043b\u044e\u0431\u043b\u0435\u043d\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c \u2013 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b. \u042d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0435 \u0442\u0430\u043a\u043e\u0439 \u0443\u0436 \u0431\u044b\u0441\u0442\u0440\u044b\u0439, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0432\u0438\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043d\u043e\u0439 JS-\u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0426\u041f\u0423, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0441\u0435 \u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0443\u0441\u0442\u0440\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0432\u0440\u043e\u0434\u0435 Tiny \u0421 Compiler \u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e Linux.<a name=\"habracut\"><\/a><\/p>\n<h2><font color=\"#3AC1EF\">\u0414\u0435\u043c\u043e<\/font><\/h2>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/3k\/yj\/na\/3kyjna9mjnzohx45rvr5kd4agfw.png\" data-src=\"https:\/\/habrastorage.org\/webt\/3k\/yj\/na\/3kyjna9mjnzohx45rvr5kd4agfw.png\"\/><\/div>\n<p><i><font color=\"#999999\">\u0416\u0438\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u0435\u043c\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 <a href=\"https:\/\/ja.nsommer.dk\/articles\/linux-and-tiny-c-compiler-in-the-browser-part-one.html\">\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438<\/a><\/font><\/i><\/p>\n<h2><font color=\"#3AC1EF\">\u041c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/font><\/h2>\n<p>  \u0411\u044b\u043b\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u044f \u043c\u043e\u0433 \u0447\u0430\u0441\u0430\u043c\u0438 \u0441\u0438\u0434\u0435\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c Linux \u043d\u0430 \u0441\u0432\u043e\u0435\u043c Pentium, \u0441\u0442\u0440\u0435\u043c\u044f\u0441\u044c \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0435 \u043b\u043e\u043c\u0430\u043b \u0438 \u0431\u044b\u043b \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c Gentoo. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c Linux \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0440\u0435\u0434\u043a\u043e. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0432 \u0447\u0438\u0441\u0442\u043e\u043c \u0432\u0438\u0434\u0435, \u0442\u043e \u0432\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 Docker \u0441 Alpine Linux. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f Linux \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u0432\u043e\u044e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430\u0445, \u0430 \u043f\u0440\u0438 \u0443\u0447\u0430\u0441\u0442\u0438\u0438 \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0421\u0438 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0438 \u0432 \u043e\u0441\u043d\u043e\u0432\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c.<\/p>\n<p>  \u041c\u0435\u0436\u0434\u0443 \u0442\u0435\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b Docker \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0442\u0430\u043a\u0438\u0435 unikernel-\u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b, \u043a\u0430\u043a MirageOS \u0438 Unikraft. \u041e\u0434\u043d\u043e \u0438\u0437 \u0438\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0439 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0430\u0448 \u043a\u043e\u0434 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0430 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0435\u0440\u0445 Linux. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0435\u0431\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c Linux \u0432 \u0441\u0432\u043e\u0439 \u043a\u043e\u0434, \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0435\u0433\u043e \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0434\u043b\u044f \u0432\u0430\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0443. \u042d\u0442\u043e \u0434\u0430\u0435\u0442 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0430\u0442\u0430\u043a\u0438, \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. <\/p>\n<p>  \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0431\u043e\u0440\u043a\u0430 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0433\u043e Linux \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 unikernel \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u0443\u044e\u0442 \u0443 Linux \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Unikraft \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c \u0436\u0435 TUI, \u0447\u0442\u043e \u0438 \u044f\u0434\u0440\u043e Linux (\u0438 Buildroot), \u0432 \u043d\u0435\u043c \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f Make \u0438 GCC, \u043f\u043b\u044e\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u0430 \u043c\u0435\u0436\u0434\u0443 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 libc, \u043d\u043e \u0447\u0442\u043e \u0436\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430? <\/p>\n<h2><font color=\"#3AC1EF\">\u041e \u0447\u0435\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e<\/font><\/h2>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u0432\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u0440\u0430\u0437 Linux \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0447\u0435\u0440\u0435\u0437 v86, 32-\u0431\u0438\u0442\u043d\u044b\u0439 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0426\u041f\u0423 x86, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 JS. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0435\u0441\u044c \u0441 \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0435\u0439 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0421\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u044d\u0442\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430. \u0412 \u043a\u043e\u043d\u0446\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u0430\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 GDB \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e gdbserver, \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0440\u0442\u043e\u0432 \u0438 QEMU.<\/p>\n<h2><font color=\"#3AC1EF\">\u0427\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f<\/font><\/h2>\n<p>  Linux (\u043d\u0435 wsl), \u0445\u043e\u0442\u044f \u0431\u044b \u0447\u0430\u0441 \u043d\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0434\u043b\u044f Buildroot:<\/p>\n<pre><code class=\"bash\">sudo apt install make gcc g++ libncurses-dev libssl-dev<\/code><\/pre>\n<p>  \u042f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b \u0441\u0431\u043e\u0440\u043a\u0443 \u0432 Ubuntu 20.04 \u0438 22.04 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e bash, \u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <i>~\/my-v86-linux<\/i>. \u0417\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043d\u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 <code>cd<\/code> \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0439\u0442\u0435 \u0432\u0441\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0442\u0442\u0443\u0434\u0430. \u041d\u0430\u0437\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430 \u0441\u0432\u043e\u0435 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435, \u0438 \u043e\u043d \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 <i>~\/<\/i>.<\/p>\n<h2><font color=\"#3AC1EF\">\u042d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 v86<\/font><\/h2>\n<p>  v86 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u044d\u043c\u0443\u043b\u0438\u0440\u0443\u044f x86-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u0426\u041f\u0423 \u0438 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043c\u043e\u0434\u0443\u043b\u0438 WebAssembly \u0432 \u0441\u0440\u0435\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0421\u043f\u0438\u0441\u043e\u043a \u044d\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0432\u043d\u0443\u0448\u0438\u0442\u0435\u043b\u0435\u043d:<\/p>\n<ul>\n<li>\u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 x86, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 Pentium III;<\/li>\n<li>\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0438 \u043c\u044b\u0448\u0438;<\/li>\n<li>VGA-\u043a\u0430\u0440\u0442\u0430;<\/li>\n<li>IDE-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440;<\/li>\n<li>\u0441\u0435\u0442\u0435\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430;<\/li>\n<li>\u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 virtio;<\/li>\n<li>\u0437\u0432\u0443\u043a\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430.<\/li>\n<\/ul>\n<p>  \u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 <a href=\"https:\/\/github.com\/copy\/v86\/blob\/master\/Readme.md#readme\">v86 readme<\/a>.<\/p>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u043d\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e Linux. \u041e\u043d \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 Windows (1.01, 3.1, 95, 98, 2000), ReactOS, FreeBSD, OpenBSD \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c\u0438 \u041e\u0421.<\/p>\n<p>  v86 \u2013 \u044d\u0442\u043e \u0445\u043e\u0431\u0431\u0438-\u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u043f\u043e\u0434 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u043c \u201ccopy\u201d. \u0421\u0443\u0434\u044f \u043f\u043e <a href=\"https:\/\/copy.sh\/\">\u0435\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435<\/a>, \u043f\u043e\u043c\u0438\u043c\u043e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 copy \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043e\u0441\u043e\u0431\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u0440, \u0438\u0433\u0440\u0443 \u00ab\u0416\u0438\u0437\u043d\u044c\u00bb \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u0430 JS \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 Brainfuck.<\/p>\n<h2><font color=\"#3AC1EF\">Buildroot<\/font><\/h2>\n<p>  Buildroot \u2013 \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c Linux \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041e\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u0443\u044e \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u043f\u0440\u0438\u044f\u0442\u043d\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430, \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435. <\/p>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, Buildroot \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0443\u0442\u0438\u043b\u0438\u0442, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0432 \u0448\u0442\u0430\u0442\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u0430\u0445 Buildroot. <\/p>\n<p>  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 <a href=\"https:\/\/buildroot.org\/\">https:\/\/buildroot.org<\/a>.<\/p>\n<p>  \u0427\u0442\u043e \u0436, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c. <\/p>\n<p>  \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0437\u0430\u0442\u0435\u043c \u0441\u043a\u0430\u0447\u0430\u0439\u0442\u0435 \u0438 \u0438\u0437\u0432\u043b\u0435\u043a\u0438\u0442\u0435 Buildroot:<\/p>\n<p>  <i>\u041f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430: \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u044b\u0448\u0438, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Tab \u0438 \u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0438\u0445.<\/i><\/p>\n<pre><code class=\"bash\">mkdir buildroot wget https:\/\/github.com\/buildroot\/buildroot\/archive\/refs\/tags\/2022.02.1.tar.gz  \\     --output-document -  \\ | tar -xz --strip-components 1 --directory buildroot<\/code><\/pre>\n<p>  \u0412\u043c\u0435\u0441\u0442\u043e \u0441\u0431\u043e\u0440\u043a\u0438 Linux \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Buildroot, \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u043d\u0443\u0436\u043d\u044b\u0435 \u0426\u041f\u0423, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b:<\/p>\n<pre><code class=\"bash\">wget https:\/\/github.com\/humphd\/browser-vm\/archive\/refs\/tags\/v1.0.2.tar.gz  \\     --output-document -  \\ | tar -xz --strip-components 1 browser-vm-1.0.2\/buildroot-v86<\/code><\/pre>\n<p>  \u0423\u0434\u0430\u043b\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u0441\u0436\u0430\u0442\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0439, \u043c\u044b \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0437\u0434\u043d\u0435\u0435.<\/p>\n<pre><code class=\"bash\">echo \"\" > buildroot-v86\/board\/v86\/post-image.sh<\/code><\/pre>\n<p>  \u041f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u0435 Buildroot \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b <i>.config<\/i> \u0441 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u0430:<\/p>\n<pre><code class=\"bash\">make --directory buildroot BR2_EXTERNAL=..\/buildroot-v86 v86_defconfig<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0435 \u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0442\u043e\u0432\u043e \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:<\/p>\n<pre><code class=\"bash\">make --directory buildroot menuconfig<\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 <i>Toolchain -> C library<\/i> \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 <i>musl<\/i>, <i>exit<\/i> \u0438 <i>save<\/i>. \u041c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443.<\/p>\n<pre><code class=\"bash\">make --directory buildroot<\/code><\/pre>\n<p>  \u042d\u0442\u043e \u0437\u0430\u0439\u043c\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043d\u043e \u0437\u0430\u0442\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u043c\u0443 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0439\u0434\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435.<\/p>\n<p>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043a\u0430\u0436\u0443 \u043e musl\u2026 \u042d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0421\u0438, \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 uClibc \u0438 glibc. \u0412 \u0432\u0430\u0448\u0435\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f glibc, GNU \u0421 Library, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0430\u044f \u0438 \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e Linux, \u0433\u0434\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0433\u0440\u0430\u0435\u0442 \u0432\u0430\u0436\u043d\u0443\u044e \u0440\u043e\u043b\u044c. uClibc \u0437\u0434\u0435\u0441\u044c \u0431\u043e\u043b\u0435\u0435 \u0443\u043c\u0435\u0441\u0442\u043d\u0430 \u0442\u0430\u043a\u0436\u0435, \u043a\u0430\u043a musl, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 <a href=\"http:\/\/www.etalabs.net\/compare_libcs.html\">\u044d\u0442\u043e\u043c (\u043f\u0440\u0435\u0434\u0432\u0437\u044f\u0442\u043e\u043c) \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438<\/a> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u044b\u043c \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u0435\u043c. <\/p>\n<p>  \u042f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e musl \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 MIT, \u0430 \u043d\u0435 (L)GPL, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0434\u043b\u044f \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0432 unikernel. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0435\u0435 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0420\u0438\u0447 \u0424\u0435\u043b\u043a\u0435\u0440 \u043f\u0440\u0438 \u0441\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u043c\u043d\u043e\u0433\u0438\u0445 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432, \u0430 \u0432 <a href=\"https:\/\/www.se-radio.net\/2020\/06\/episode-414-jens-gustedt-on-modern-c\">\u044d\u0442\u043e\u043c \u043f\u043e\u0434\u043a\u0430\u0441\u0442\u0435<\/a> \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f (\u043d\u0430 01:01:17), \u0447\u0442\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 musl \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u0430.<\/p>\n<h2><font color=\"#3AC1EF\">\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u0430\u0439\u0442\u0430<\/font><\/h2>\n<p>  \u041f\u043e\u043a\u0430 Buildroot \u0437\u0430\u043d\u044f\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0435\u0439, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0430\u0439\u0442, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440, \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f Buildroot Linux:<\/p>\n<pre><code class=\"bash\">mkdir web wget https:\/\/github.com\/copy\/v86\/releases\/download\/latest\/libv86.js  \\     --directory-prefix web wget https:\/\/github.com\/copy\/v86\/releases\/download\/latest\/v86.wasm  \\     --directory-prefix web wget https:\/\/github.com\/copy\/v86\/releases\/download\/latest\/v86-fallback.wasm  \\     --directory-prefix web wget https:\/\/github.com\/copy\/v86\/archive\/refs\/tags\/latest.tar.gz  \\     --output-document -  \\ | tar -xz --strip-components 2 --directory web  \\     v86-latest\/bios\/seabios.bin  \\     v86-latest\/bios\/vgabios.bin  cat >web\/index.html &lt;&lt;EOF &lt;!DOCTYPE html> &lt;meta charset=\"utf8\"> &lt;title>Emulator&lt;\/title> &lt;body bgcolor=\"#101010\">  &lt;div id=\"screen_container\">     &lt;div style=\"white-space: pre; font: 14px monospace; line-height: 14px\">&lt;\/div>     &lt;canvas hidden>&lt;\/canvas> &lt;\/div>  &lt;script src=\"\/libv86.js\">&lt;\/script> &lt;script> var emulator = new V86Starter({     wasm_path        : \"\/v86.wasm\",     memory_size      : 64 * 1024 * 1024,  \/\/ 64\u041c\u0411 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e     vga_memory_size  : 2 * 1024 * 1024,     screen_container : screen_container,     bios             : {url: \"\/seabios.bin\"},     vga_bios         : {url: \"\/vgabios.bin\"},     cdrom            : {url: \"\/linux.iso\"},     filesystem       : {},     autostart        : true }) &lt;\/script> EOF<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:<\/p>\n<pre><code class=\"bash\">cp buildroot\/output\/images\/rootfs.iso9660 web\/linux.iso<\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043d\u0430 \u0432\u0435\u0431-\u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"bash\">python3 -m http.server 8000 --directory web<\/code><\/pre>\n<p>  \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 <a href=\"http:\/\/localhost:8000\/\">http:\/\/localhost:8000<\/a>, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c v86 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438. \u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u043a\u0430\u043a \u0440\u0443\u0442-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.<\/p>\n<h2><font color=\"#3AC1EF\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043e\u0431\u0440\u0430\u0437\u0430<\/font><\/h2>\n<p>  \u0412\u0441\u044f \u0441\u0443\u0442\u044c Buildroot \u0432 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<pre><code class=\"bash\">make --directory buildroot menuconfig<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"bash\">make --directory buildroot busybox-menuconfig<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"bash\">make --directory buildroot linux-menuconfig<\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0438\u0437\u0443\u0447\u0430\u0442\u044c.<\/p>\n<h3><font color=\"#3AC1EF\">menuconfig<\/font><\/h3>\n<p>  \u042d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0430\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u0430\u043a \u0432\u0435\u0440\u0441\u0438\u044f \u044f\u0434\u0440\u0430 Linux, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a (grub2, syslinux \u0438 \u0442.\u0434.), \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438 \u0446\u0435\u043b\u0435\u0432\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u0443\u0442\u0438\u043b\u0438\u0442 \u0434\u043e X11 \u0438 Qt. <\/p>\n<h3><font color=\"#3AC1EF\">busybox-menuconfig<\/font><\/h3>\n<p>  Busybox \u0441\u043e\u0432\u043c\u0435\u0449\u0430\u0435\u0442 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0441\u043e\u0442\u043d\u0438 \u0443\u0442\u0438\u043b\u0438\u0442 Linux, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0431\u043e\u0433\u0430\u0442\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>busybox-menuconfig<\/code>. \u041e\u043d\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 ls, grep, diff \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0438\u0437 Linux, \u0438 \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430. \u0412 \u0438\u0434\u0435\u0430\u043b\u0435 Busybox \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0433\u043e\u043b\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044f \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u043d\u0435\u0433\u043e. \u0418\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0438 \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e unikernel, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u044d\u0442\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0437 \u043d\u0438\u0447\u0435\u0433\u043e \u0438 \u0441\u0430\u043c\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435. <\/p>\n<h3><font color=\"#3AC1EF\">linux-menuconfig<\/font><\/h3>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044f\u0434\u0440\u0430 Linux. \u0417\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u0438 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043e\u043a \u0431\u0435\u0437 \u0434\u043e\u043b\u0436\u043d\u043e\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u043b\u0435\u0447\u044c \u0441\u0431\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0412 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u044f \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u044f\u0434\u0440\u043e \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0431 \u0438 \u043e\u0448\u0438\u0431\u043e\u043a, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0434\u0435\u043b\u0430\u044e \u0442\u0430\u043a \u0441\u0430\u043c: \u0443\u0434\u0430\u043b\u044f\u044e \u043e\u0434\u043d\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0441\u043f\u043b\u0435\u0432\u044b\u0432\u0430\u044e \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u0435\u0447\u043e \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e. <\/p>\n<p>  \u041f\u043e\u043a\u0430 \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0432\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0441\u043e\u0431\u043b\u0430\u0437\u043d\u0430 \u0432\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<h3><font color=\"#3AC1EF\">rootfs_overlay<\/font><\/h3>\n<p>  \u042d\u0442\u043e\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432 <i>buildroot-v86\/board\/v86\/rootfs_overlay<\/i>, \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043d\u0435\u0433\u043e \u043c\u044b \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u0438\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043e\u0431\u0440\u0430\u0437. \u041d\u0430\u0448 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0432\u0430 \u0442\u0430\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u0430: <i>etc\/fstab<\/i> \u0438 <i>etc\/inittab<\/i>.<\/p>\n<h3><font color=\"#3AC1EF\">\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u044f\u0434\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438<\/font><\/h3>\n<p>  \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0435\u0449\u0438 \u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u043b\u0438\u044f\u044e\u0442, \u043d\u043e \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0438 \u0437\u0430\u0433\u0440\u043e\u043c\u043e\u0436\u0434\u0430\u0442\u044c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u043f\u043e\u0441\u043b\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u043f\u0440\u044f\u043c\u043e \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0443 \u0432\u0432\u043e\u0434\u0438\u043c\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. <\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u044f\u0434\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b:<\/p>\n<pre><code class=\"bash\">mkdir buildroot-v86\/board\/v86\/rootfs_overlay\/etc\/profile.d echo \"echo 0 >\/proc\/sys\/kernel\/printk\"  \\     >buildroot-v86\/board\/v86\/rootfs_overlay\/etc\/profile.d\/noprintk.sh<\/code><\/pre>\n<p>  \u0412\u0441\u0435 \u0444\u0430\u0439\u043b\u044b <i>.sh<\/i> \u0438\u0437 <i>etc\/profile.d<\/i> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<h2><font color=\"#3AC1EF\">\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f<\/font><\/h2>\n<p>  \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <i>etc\/inittab<\/i> \u043f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u0442 <code>etc\/fstab<\/code>, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u00ab\u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442\u00bb \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u041e\u0434\u043d\u0430 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043b\u044f \u043f\u043e\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u043c <code># GENERIC_SERIAL<\/code> \u2013 \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c <code>\/bin\/sh<\/code>.<\/p>\n<pre><code class=\"bash\">(F=buildroot-v86\/board\/v86\/rootfs_overlay\/etc\/inittab &amp;&amp; cp $F \/tmp\/oldf  \\  &amp;&amp; sed --in-place \"28d\" $F  \\  &amp;&amp; sed --in-place \"s\/.*# GENERIC_SERIAL\/console::respawn:-\\\/bin\\\/sh\/\" $F  \\  &amp;&amp; diff \/tmp\/oldf $F)<\/code><\/pre>\n<p>  \u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e \u044d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 <code>console::respawn<\/code>. \u0412\u043e\u0437\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0435 (respawn) \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 <code>sh<\/code> \u0434\u0430\u0441\u0442 \u0441\u0431\u043e\u0439, Busybox \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442 \u0435\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u043e\u043d\u0430 \u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f \u0441 \u0443\u0441\u043f\u0435\u0445\u043e\u043c. <\/p>\n<p>  \u0417\u0430\u043c\u0435\u043d\u0430 <code>getty<\/code> \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u0430\u043c\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0441 \u043e\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 tty, \u0447\u0442\u043e \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435: \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c <i>\u0410<\/i> \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d \u0432 tty1, \u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c <i>B<\/i> \u0432 tty2, \u0442\u043e\u0433\u0434\u0430 <i>\u0410<\/i> \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0442\u0440\u0435\u0432\u043e\u0436\u0438\u0442\u044c <i>B<\/i>, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 <code>echo \u201cHi B!\" >\/dev\/tty2<\/code>. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u043c <code>-\/bin\/sh<\/code>, \u0433\u0434\u0435 \u0434\u0435\u0444\u0438\u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442 Busybox \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443 \u043a\u0430\u043a \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443 \u0441 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <code>\/etc\/profile<\/code> \u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0432 <code>\/etc\/profile.d<\/code> \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b. <\/p>\n<p>  \u0414\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043e\u0431\u0440\u0430\u0437 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e.<\/p>\n<h2><font color=\"#3AC1EF\">\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 Tiny C Compiler<\/font><\/h2>\n<p>  Tiny C Compiler, \u0438\u043b\u0438 tcc, \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a:<\/p>\n<ul>\n<li>ANSI C-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e\u043c <a href=\"https:\/\/bellard.org\/tcc\/tcc-doc.html#ISOC99-extensions\">\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 C99<\/a>;<\/li>\n<li>\u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439, ~300 KB;<\/li>\n<li>\u0431\u044b\u0441\u0442\u0440\u044b\u0439, \u0435\u0441\u043b\u0438 \u0432\u0435\u0440\u0438\u0442\u044c \u0435\u0433\u043e <a href=\"https:\/\/bellard.org\/tcc\/\">\u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435<\/a> \u2013 \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0432 9 \u0440\u0430\u0437 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 gcc.<\/li>\n<\/ul>\n<p>  \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b tcc \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 win32 \u0441 opengl \u0438 gdi+, \u0430 \u0442\u0430\u043a\u0436\u0435 pdf-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043f\u043e\u0437\u0434\u043d\u0435\u0435 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u0434\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u044f \u043d\u0435 \u0441\u043c\u043e\u0433 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c libpng, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c GCC \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u0449\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 tcc \u0441\u043c\u043e\u0436\u0435\u0442 \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>  \u042d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0424\u0430\u0431\u0440\u0438\u0441 \u0411\u0435\u043b\u043b\u0430\u0440, \u0430\u0432\u0442\u043e\u0440 QEMU, ffmpeg, quickjsm, kslinux \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c. \u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u0432\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0435\u0433\u043e \u041f\u041e. \u042f \u0436\u0435 \u0437\u0434\u0435\u0441\u044c \u0432\u043e\u0437\u044c\u043c\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e tcc, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b \u0434\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u043e\u043d\u0430 \u0432\u043f\u043e\u043b\u043d\u0435 \u0436\u0438\u0432\u0430 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 <a href=\"https:\/\/repo.or.cz\/tinycc.git\">\u044d\u0442\u043e\u043c \u0444\u043e\u0440\u043a\u0435<\/a>.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c tcc \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0435\u0433\u043e \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0430\u0436\u0434\u044b: \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 <i>libtcc1.a<\/i>. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e Makefile, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0434\u0435\u0441\u044c \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 tcc \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f GCC, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e tcc \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 <i>libtcc1.a<\/i>. \u0415\u0441\u043b\u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 musl, \u0442\u043e \u043e\u043d \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u0445\u043e\u0441\u0442\u0435, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 <i>libtcc1.a<\/i> \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. <\/p>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0432\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0446\u0438\u0438 <code>--enable-cross<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 <i>libtcc1.a<\/i>. <\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0438 libc: x86 musl. <\/p>\n<pre><code class=\"bash\">mkdir tcc wget http:\/\/download.savannah.gnu.org\/releases\/tinycc\/tcc-0.9.27.tar.bz2  \\     --output-document -  \\ | tar -xj --strip-components 1 --directory tcc  \\     --exclude tests --exclude examples  mkdir libtcc cp --recursive tcc\/* libtcc<\/code><\/pre>\n<p>  \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e tcc \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0426\u041f\u0423, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c i386-\u0432\u0435\u0440\u0441\u0438\u044e <i>libtcc1.a<\/i>.<\/p>\n<pre><code class=\"bash\">(cd libtcc &amp;&amp; .\/configure --prefix=.\/output --enable-cross)<\/code><\/pre>\n<p>  \u0412 glibc 2.34 \u0445\u0443\u043a\u0438 malloc \u0431\u044b\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u044b, \u0438 Ubuntu 22.04 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 glibc 2.35. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u0434\u043b\u044f Ubuntu 20.04, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u043f\u043e\u043b\u043d\u0435 \u0431\u0435\u0437\u0432\u0440\u0435\u0434\u043d\u044b.<\/p>\n<pre><code class=\"bash\">(F=libtcc\/lib\/bcheck.c &amp;&amp; cp $F \/tmp\/oldf  \\  &amp;&amp; sed --in-place \"s\/#define CONFIG_TCC_MALLOC_HOOKS\/\/\" $F  \\  &amp;&amp; sed --in-place \"s\/#define HAVE_MEMALIGN\/\/\" $F  \\  &amp;&amp; diff \/tmp\/oldf $F)<\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c libtcc \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u0438 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043e\u0432\u0435\u0440\u043b\u0435\u044f.<\/p>\n<pre><code class=\"bash\">make --directory libtcc make --directory libtcc install mkdir -p buildroot-v86\/board\/v86\/rootfs_overlay\/lib\/tcc cp libtcc\/output\/lib\/tcc\/i386-libtcc1.a  \\     buildroot-v86\/board\/v86\/rootfs_overlay\/lib\/tcc\/libtcc1.a<\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0438\u0434\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0434\u043b\u044f x86 musl.<\/p>\n<pre><code class=\"bash\">(cd tcc &amp;&amp; .\/configure  \\     --cpu=x86  \\     --config-musl  \\     --cross-prefix=${PWD}\/..\/buildroot\/output\/host\/bin\/i686-buildroot-linux-musl-  \\     --elfinterp=\/lib\/ld-musl-i386.so.1  \\     --crtprefix=\/lib  \\     --libdir=\/lib  \\     --tccdir=\/lib\/tcc  \\     --bindir=\/bin  \\     --includedir=\/include  \\     --sysincludepaths=\/lib\/tcc\/include:\/include  \\     --sharedir=-unused  \\     `# \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u043d\u043e \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d-\u0441\u0431\u043e\u0440\u043a\u0435 \u044d\u0442\u043e \u043f\u043e\u043b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c.`  \\     `# \u0412 \u0438\u0442\u043e\u0433\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u0441\u044f \u043d\u0430 ~70%.`  \\     `# --strip-binaries`) make --directory tcc  \\     --assume-old libtcc1.a  \\     --assume-old tcc-doc.html  \\     --assume-old tcc-doc.info DESTDIR=$PWD\/tcc\/output make --directory tcc install cp --recursive tcc\/output\/* buildroot-v86\/board\/v86\/rootfs_overlay<\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c:<\/p>\n<ul>\n<li><code>--assume-old<\/code> \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 <code>make<\/code> \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c <i>libtcc1.a<\/i>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0435 makeinfo \u0448\u0430\u0433\u0438, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0432 \u0438\u0442\u043e\u0433\u0435 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <code>output-unused<\/code>, \u0447\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u0438\u0442\u0440\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>--sharedir=-unused<\/code>. <code>DESTDIR<\/code> \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441 \u043e\u043f\u0446\u0438\u0435\u0439 <code>--prefix=.\/output<\/code> \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 tcc \u0441 \u043f\u0443\u0442\u044f\u043c\u0438 \u043f\u043e\u0438\u0441\u043a\u0430, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u0441 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430.<\/li>\n<li><code>--elfinterp<\/code> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a \u0432 \u043e\u0431\u0440\u0430\u0437\u0435, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043e\u0431\u0449\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u0438 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442. \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c musl, \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <i>ld-musl-i386.so.1<\/i>, \u043d\u043e \u0432 \u0432\u0430\u0448\u0435\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435 \u043d\u0430 \u0431\u0430\u0437\u0435 glibc \u044d\u0442\u043e \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 <i>ld-linux-x86-64.so.2<\/i>. \u0411\u0435\u0437 \u043d\u0435\u0433\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0438 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 <code>\/bin\/sh: {your command}: not found<\/code>.<\/li>\n<\/ul>\n<p>  \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 tcc \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u044d\u0442\u0438\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 <i>crt<\/i>, \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u00ab\u0441 runtime\u00bb, \u0438 \u043c\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 tcc \u043d\u0430 \u043f\u043e\u0438\u0441\u043a \u0438\u0445 \u0432 <i>\/lib<\/i>. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 tcc \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0421\u0438 \u0431\u0435\u0437 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0447\u0435\u0440\u0435\u0437 <code>\u0435\u0441\u0441 -run file.c<\/code>, \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0432\u0430\u043c, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b (\u0438 \u0435\u0441\u043b\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430). \u0412\u043e\u0442 \u043a\u0440\u0430\u0442\u043a\u0438\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e crt-\u0444\u0430\u0439\u043b\u0430\u0445 \u0438\u0437 <a href=\"https:\/\/dev.gentoo.org\/~vapier\/crt.txt\">https:\/\/dev.gentoo.org\/~vapier\/crt.txt<\/a>:<\/p>\n<p>  <font color=\"#3AC1EF\">crt1.o<\/font><br \/>  \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0438\u043c\u0432\u043e\u043b <code>_start<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u0442 <code>env<\/code> \u0441 <code>argc\/argv\/libc _init\/libc _fini<\/code> \u0434\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043a libc main.<\/p>\n<p>  <font color=\"#3AC1EF\">crti.o<\/font><br \/>  \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u043b\u043e\u0433 \u0444\u0443\u043d\u043a\u0446\u0438\u0438; <code>_init<\/code> \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <code>.init<\/code> \u0438 <code>_fini<\/code> \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <code>.fini<\/code>.<\/p>\n<p>  <font color=\"#3AC1EF\">crtn.o<\/font><br \/>  \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u044d\u043f\u0438\u043b\u043e\u0433 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<pre><code class=\"bash\">cp buildroot\/output\/host\/i686-buildroot-linux-musl\/sysroot\/lib\/crt*.o  \\     buildroot-v86\/board\/v86\/rootfs_overlay\/lib<\/code><\/pre>\n<p>  \u0412\u043e\u0442 \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 tcc \u0432 v86, \u043d\u043e \u0431\u0435\u0437 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 musl \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0421\u0438 \u043e\u043d \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u043d\u0435 \u043d\u0430 \u043c\u043d\u043e\u0433\u043e\u0435. \u041c\u044b \u0431\u0435\u0440\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u043b\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u0441\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0431\u0435\u0437 \u0441\u0436\u0430\u0442\u0438\u044f \u0432\u0435\u0441\u044f\u0442 ~5\u041c\u0411.<\/p>\n<pre><code class=\"bash\">printf \"buildroot\/output\/host\/i686-buildroot-linux-musl\/sysroot\/usr\/include\/%s\\0\"  \\     bits alloca.h assert.h complex.h ctype.h errno.h fenv.h float.h features.h  \\     inttypes.h iso646.h limits.h locale.h math.h memory.h malloc.h setjmp.h  \\     signal.h stdalign.h stdarg.h stdbool.h stddef.h stdint.h stdio.h stdlib.h  \\     stdnoreturn.h string.h strings.h tgmath.h threads.h time.h uchar.h  \\     wchar.h wctype.h  \\ | xargs -0 cp --recursive --target buildroot-v86\/board\/v86\/rootfs_overlay\/include<\/code><\/pre>\n<p>  <\/p>\n<h3><font color=\"#3AC1EF\">Hello world<\/font><\/h3>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 tcc \u0432 \u043d\u0430\u0448 \u043e\u0431\u0440\u0430\u0437 \u043f\u043e\u0440\u0430 \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u043e\u0439 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0435\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<pre><code class=\"bash\">mkdir buildroot-v86\/board\/v86\/rootfs_overlay\/opt cat >buildroot-v86\/board\/v86\/rootfs_overlay\/opt\/test.c &lt;&lt;EOF #include &lt;stdio.h> #include &lt;string.h>  int main(int argc, char **argv) {     char *name = \"stranger\";     if (argc > 1 &amp;&amp; strlen(argv[1]) > 0)         name = argv[1];     printf(\"Hello, %s\\n\", name);     return 0; } EOF<\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0437 \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438:<\/p>\n<pre><code class=\"bash\">make --directory buildroot cp buildroot\/output\/images\/rootfs.iso9660 web\/linux.iso<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u043a\u0440\u044b\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:<\/p>\n<pre><code class=\"bash\">python3 -m http.server 8000 --directory web<\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 <a href=\"http:\/\/localhost:8000\/\">http:\/\/localhost:8000<\/a> \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435:<\/p>\n<pre><code class=\"bash\"># \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0430 tcc -run \/opt\/test.c  # \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0430 tcc \/opt\/test.c -o hello .\/hello world<\/code><\/pre>\n<p>  <\/p>\n<h2><font color=\"#3AC1EF\">\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a<\/font><\/h2>\n<p>  \u041f\u043e\u0440\u0430 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0442\u0435\u0441\u0442, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u0442\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0443\u044e pdf-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 libhau.<\/p>\n<pre><code class=\"bash\">mkdir libharu wget https:\/\/github.com\/libharu\/libharu\/archive\/refs\/tags\/RELEASE_2_3_0.tar.gz  \\     --output-document -  \\ | tar -xz --strip-components 1 --wildcards --directory libharu  \\       \"libharu-RELEASE_2_3_0\/include\/*.h\"  \\       \"libharu-RELEASE_2_3_0\/src\/*.c\"  \\       libharu-RELEASE_2_3_0\/src\/t4.h  \\       libharu-RELEASE_2_3_0\/demo\/line_demo.c  cat >libharu\/include\/hpdf_config.h &lt;&lt;EOF #define LIBHPDF_HAVE_NOPNGLIB #define HPDF_NOPNGLIB #define LIBHPDF_HAVE_NOZLIB EOF<\/code><\/pre>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c <code>sudo apt install sloccount<\/code>, \u0430 \u0437\u0430\u0442\u0435\u043c <code>sloccount libharu<\/code> \u0438 \u0443\u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u044d\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 128394 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430. \u0412\u0441\u0435 \u0434\u0435\u043b\u043e \u0432 \u043d\u0430 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0439\u043c\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e, \u0441\u043e\u0437\u0434\u0430\u0432 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u0433\u0440\u0443\u0431\u044b\u0439 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0438 \u0434\u043b\u044f GCC, \u0438 \u0434\u043b\u044f tcc.<\/p>\n<pre><code class=\"bash\">cat >libharu\/benchmark &lt;&lt;EOF LIBHARUDIR=\\$(dirname \\$(readlink -f \"\\$0\")) CC=\\$1 [[ \\$CC = gcc ]] &amp;&amp; LIBMATH=-lm time \\$CC -I\\$LIBHARUDIR\/include \"\\$LIBHARUDIR\/src\/*.c\"  \\\\     \\$LIBHARUDIR\/demo\/line_demo.c \\$LIBMATH -o \/dev\/null EOF chmod +x libharu\/benchmark  # \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u0431\u0449\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430 buildroot\/output\/host\/bin\/i686-buildroot-linux-musl-gcc -shared -fPIC  \\     -Ilibharu\/include libharu\/src\/*.c -lm  \\     -o buildroot-v86\/board\/v86\/rootfs_overlay\/lib\/libharu.so  # \u0423\u043f\u0440\u043e\u0449\u0430\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u0430 \u0437\u0430 \u0441\u0447\u0435\u0442 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438 tcc \u0441 libhau, \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0441 \u043d\u0443\u043b\u044f cat >libharu\/benchmark-link &lt;&lt;EOF time tcc -Ilibharu\/include -lharu libharu\/demo\/line_demo.c -o \/dev\/null EOF chmod +x libharu\/benchmark-link  cp --recursive libharu buildroot-v86\/board\/v86\/rootfs_overlay  make --directory buildroot cp buildroot\/output\/images\/rootfs.iso9660 web\/linux.iso<\/code><\/pre>\n<p>  <\/p>\n<h3><font color=\"#3AC1EF\">\u041f\u0440\u043e\u0433\u043e\u043d \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432<\/font><\/h3>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e:<\/p>\n<pre><code class=\"bash\">libharu\/benchmark gcc<\/code><\/pre>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435:<\/p>\n<pre><code class=\"bash\">libharu\/benchmark tcc  # \u041d\u0430\u0431\u0435\u0440\u0438\u0442\u0435\u0441\u044c \u0442\u0435\u0440\u043f\u0435\u043d\u0438\u044f<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"bash\">libharu\/benchmark-link<\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u0435\u0441\u0442, \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0430 \u0441 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043e\u0431\u0449\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u043d\u0443\u043b\u044f. \u041d\u0430 \u043c\u043e\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0430 \u0432 v86 \u0437\u0430\u043d\u044f\u043b\u0430 60 \u043c\u0441. \u041d\u0435\u043f\u043b\u043e\u0445\u043e! \u0412\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 <i>libharu\/demo\/line_demo.c <\/i> \u2014 \u044d\u0442\u043e \u043d\u0435 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0444\u0430\u0439\u043b \u0421\u0438.<\/p>\n<p>  \u042f \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043d\u0435 \u0441\u0442\u0430\u043b \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u043a\u0430\u043a \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e tcc. \u0417\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u043a\u043e\u0435-\u043a\u0430\u043a\u043e\u0439 \u0431\u0430\u0433, \u0438 \u043c\u044b \u0435\u0433\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c.<\/p>\n<h2><font color=\"#3AC1EF\">\u041e\u0442\u043b\u0430\u0434\u043a\u0430<\/font><\/h2>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438 \u0432\u0441\u0435\u043c \u044d\u0442\u0430\u043f\u0430\u043c \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c:<\/p>\n<pre><code class=\"bash\">tcc -shared -fPIC -Ilibharu\/include libharu\/src\/*.c<\/code><\/pre>\n<p>  \u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0440\u043e\u0441\u0438\u0442 tcc \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043e\u0431\u0449\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0438 \u0434\u043b\u0438\u0442\u0441\u044f \u043e\u043a\u043e\u043b\u043e 30 \u0441\u0435\u043a\u0443\u043d\u0434, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u042f \u043d\u0435 \u0441\u043a\u0430\u0436\u0443 \u0432\u0430\u043c, \u043a\u0430\u043a \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e t\u0441\u0441 \u043e\u0431\u0449\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0430 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 x86, \u0434\u0430 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0435\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u043d\u0435 \u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0435\u0442. \u041f\u0440\u0430\u0432\u0434\u0430, \u043e\u0441\u043e\u0437\u043d\u0430\u043b \u044f \u044d\u0442\u043e \u043d\u0435 \u0441\u0440\u0430\u0437\u0443 \u0438 \u043f\u043e\u043d\u0430\u0447\u0430\u043b\u0443 \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u0441\u0431\u043e\u044f, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430\u0441\u044c\u2026<\/p>\n<h3><font color=\"#3AC1EF\">\u0423\u0434\u0430\u043b\u0435\u043d\u043d\u0430\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0430<\/font><\/h3>\n<p>  \u041e\u0442\u043b\u0430\u0434\u0447\u0438\u043a GNU \u2013 GDB \u2013 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u0443\u044e \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 gdbserver, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u043e\u0431\u043e\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043d\u0435\u043c\u0443 \u0438\u0437 GDB. \u0411\u044b\u043b\u043e \u0431\u044b \u043a\u0440\u0443\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c gdbserver \u0432 v86 \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u043d\u0435\u043c\u0443 \u0438\u0437 GDB, \u043d\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 GDB \u0432 v86 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 (\u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0432\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435, \u043f\u043e\u0447\u0435\u043c\u0443), gdbserver \u043d\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u0436\u0435.<\/p>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439, \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0438\u0439 \u0431\u0430\u0433 \u0432 QEMU \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 GDB\/gdbserver \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e socat. \u0410 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 GDB \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c musl-cross-make \u0447\u0435\u0440\u0435\u0437 Git.<\/p>\n<pre><code class=\"bash\">sudo apt install qemu-system-i386 socat git<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 QEMU \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0437:<\/p>\n<pre><code class=\"bash\">qemu-system-i386 -serial stdio -cdrom web\/linux.iso -cpu Westmere<\/code><\/pre>\n<p>  \u0418 \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0434\u0430\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u0440\u0438\u043a\u043e\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0434\u043b\u044f \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0430. \u041d\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u0438 \u043f\u043e\u0440\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u043f\u043b\u043e\u0445\u0438\u043c\u2026<\/p>\n<p>  Buildroot, GDB \u0438 musl \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u043b\u0430\u0434\u044f\u0442, \u0447\u0442\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 GDB \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043e\u0448\u0438\u0431\u043a\u0430\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c GDB \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u042d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c, \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0432 \u0432\u043c\u0435\u0441\u0442\u043e musl \u043f\u0430\u043a\u0435\u0442 uClibc, \u043d\u043e \u0432\u043e \u0438\u043c\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 MIT \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u0442\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u0438\u0432 \u0435\u0449\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438.<\/p>\n<p>  \u041a\u043e\u0434 \u043d\u0438\u0436\u0435 \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u0442 musl-cross-make, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442 \u0438 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u0435\u0435.<\/p>\n<pre><code class=\"bash\">git clone https:\/\/github.com\/richfelker\/musl-cross-make.git  cat >musl-cross-make\/config.mak &lt;&lt;EOF TARGET=i686-linux-musl MUSL_VER=git-v1.2.2 GCC_VER=10.3.0 # \u041d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 COMMON_CONFIG += --disable-nls EOF  make --directory musl-cross-make -j$(nproc) make --directory musl-cross-make install<\/code><\/pre>\n<p>  \u041c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u0432\u043b\u0435\u0447\u044c\u0441\u044f \u043d\u0430 \u043a\u043e\u0444\u0435. <br \/>  \u2026<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0441\u0431\u043e\u0440\u043a\u0435 GDB\/gdbserver \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0432 <code>musl-cross-make\/output\/bin<\/code>. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 GDB 10.2, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 GMP (GNU Multiple Precision Arithmetic Library), \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439.<\/p>\n<pre><code class=\"bash\">mkdir gdb wget https:\/\/ftp.gnu.org\/gnu\/gdb\/gdb-10.2.tar.gz --output-document -  \\ | tar -xz --strip-components 1 --directory gdb (cd gdb &amp;&amp;  \\  PATH=$PATH:$PWD\/..\/musl-cross-make\/output\/bin   \\  .\/configure  \\      --prefix=$PWD\/output  \\      --host=i686-linux-musl  \\      --disable-nls  \\      --with-curses) PATH=$PATH:$PWD\/musl-cross-make\/output\/bin make --directory gdb -j$(nproc) PATH=$PATH:$PWD\/musl-cross-make\/output\/bin make --directory gdb install<\/code><\/pre>\n<p>  \u041d\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 <code>musl-cross-make\/output\/bin<\/code> \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0435\u0442 \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043e\u0431 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u043b\u044f \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 <code>i686-linux-musl<\/code>, \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 <code>musl-cross-make\/config.mak<\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>TARGET<\/code>. GDB \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0442\u043e\u043c\u0443 \u0436\u0435 \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044e \u0438 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 <code>i686-linux-musl<\/code> \u0432 <code>\u2013host<\/code>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 <code>PATH<\/code>, GDB \u0441\u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438\u0445 \u0432 \u0432\u0430\u0448\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, \u043c\u044b <code>--disable-nls<\/code> (\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e) \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c <code>--with-curses<\/code>, \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0440\u0435\u0432\u043d\u0435\u0439 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b, \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0449\u0435\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e.<\/p>\n<p>  \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>strip<\/code> \u043e\u0447\u0438\u0449\u0430\u0435\u043c gdbserver \u043e\u0442 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443. \u042d\u0442\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 gdbserver \u0441 8\u041c\u0411 \u0434\u043e 500\u041a\u0411. \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 gdbserver \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 C++.<\/p>\n<p>  \u0412\u0441\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u0432\u0435\u0441\u044f\u0442 ~2500\u041a\u0411, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438\u0445 \u0441\u043d\u043e\u0432\u0430 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0438\u0442\u044c. <\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c GDB \u0434\u043b\u044f \u0445\u043e\u0441\u0442\u0430, \u0447\u0442\u043e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 Buildroot:<\/p>\n<pre><code class=\"bash\">make --directory buildroot menuconfig<\/code><\/pre>\n<p>  \u0417\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 <i>Toolchain -> Build cross gdb for the host<\/i> \u0438 c\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0439\u0442\u0435:<\/p>\n<pre><code class=\"bash\">make --directory buildroot cp buildroot\/output\/images\/rootfs.iso9660 web\/linux.iso<\/code><\/pre>\n<p>  <\/p>\n<h3><font color=\"#3AC1EF\">Qemu \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b<\/font><\/h3>\n<p>  \u041f\u043e\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0441\u0435\u0432\u0434\u043e-\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b (pty), \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0439 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 socat \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043b\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 id \u0432\u0440\u043e\u0434\u0435 <code>\/dev\/pty\/2<\/code> \u0438 <code>\/dev\/pty\/18<\/code>, \u043c\u044b \u043f\u0440\u043e\u0441\u0438\u043c \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 id \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0441 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c\u0438 \u043d\u0430\u043c id. <\/p>\n<p>  \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:<\/p>\n<pre><code class=\"bash\">socat pty,rawer,link=\/tmp\/vserial-host pty,rawer,link=\/tmp\/vserial-target<\/code><\/pre>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 QEMU \u0432 \u043d\u043e\u0432\u043e\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u043e\u0440\u0442\u0443 \u0445\u043e\u0441\u0442\u0430:<\/p>\n<pre><code class=\"bash\">qemu-system-i386 -serial stdio -cdrom web\/linux.iso -cpu Westmere  \\     -chardev serial,id=gdbserial,path=\/tmp\/vserial-host  \\     -device isa-serial,chardev=gdbserial<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0432\u0435\u0434\u0435\u0442\u0435 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 <code>dmesg | grep tty<\/code>, \u0442\u043e \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0434\u0432\u0430 \u043f\u043e\u0440\u0442\u0430: <code>ttyS0<\/code>, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0443 \u0447\u0435\u0440\u0435\u0437 <code>-serial stdio<\/code>, \u0438 <code>ttyS1<\/code>, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u043e\u0440\u0442\u0443 socat.<\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 gdbserver \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 QEMU \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 tcc:<\/p>\n<pre><code class=\"bash\">gdbserver \/dev\/ttyS1 tcc -shared -fPIC -Ilibharu\/include libharu\/src\/*.c<\/code><\/pre>\n<p>  \u0417\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 GDB \u043d\u0430 \u0445\u043e\u0441\u0442\u0435, \u0443\u043a\u0430\u0437\u0430\u0432 \u043d\u0430 \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e tcc:<\/p>\n<pre><code class=\"bash\">buildroot\/output\/host\/bin\/i686-buildroot-linux-musl-gdb  \\     -ix buildroot\/output\/staging\/usr\/share\/buildroot\/gdbinit  \\     tcc\/output\/bin\/tcc<\/code><\/pre>\n<p>  <code>-ix<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442: \u0434\u043e <code>inferior<\/code> \u2013 \u0435\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e, \u0442\u043e \u0442\u0430\u043a \u0432 GDB \u0437\u043e\u0432\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u2013 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0444\u0430\u0439\u043b <code>buildroot\/...\/gdbinit<\/code>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c <code>gdbinit<\/code> \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f Buildroot \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"bash\">add-auto-load-safe-path {...}\/buildroot\/output\/host\/i686-buildroot-linux-musl\/sysroot set sysroot {...}\/buildroot\/output\/host\/i686-buildroot-linux-musl\/sysroot<\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043a\u043e\u043f\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u0445.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a QEMU \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c tcc:<\/p>\n<pre><code class=\"bash\">(gdb) target remote \/tmp\/vserial-target<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"bash\">(gdb) continue<\/code><\/pre>\n<p>  \u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u043a\u0430\u043a \u044f \u043f\u043e\u043d\u044f\u043b, \u0432\u044b\u0437\u0432\u0430\u043d\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0439 Buildroot \u043e\u0447\u0438\u0441\u0442\u043a\u043e\u0439 \u043e\u0431\u0449\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430:<\/p>\n<pre><code class=\"bash\">0x004f9c1f in fill_local_got_entries (s1=0xb7e99020) at tccelf.c:1362 1362        for_each_elem(s1->got->reloc, 0, rel, ElfW_Rel) {<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 tcc, \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043e\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043e\u0431\u0449\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0437\u0434\u0435\u0441\u044c \u0432\u043b\u0438\u044f\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0434\u043b\u044f uClibc \u0438\u043b\u0438 \u0430\u043f\u0433\u0440\u0435\u0439\u0434 \u0434\u043e \u0444\u043e\u0440\u043a\u0430 tcc (\u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0435\u0439). \u0414\u0430\u0439\u0442\u0435 \u0437\u043d\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u044f \u043c\u043e\u0433 \u0432\u043d\u0435\u0441\u0442\u0438 \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 \u0441\u0442\u0430\u0442\u044c\u044e. <\/p>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c GDB \u0432 <code>rootfs_overlay<\/code> \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432 QEMU, \u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u043c\u044b \u0442\u0435\u0440\u044f\u0435\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u0432\u0438\u0434\u0443 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u0430\u0441 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u043c\u0435\u0440\u043e\u0432 \u0441\u0442\u0440\u043e\u043a, \u0442\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c GDB \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435. <\/p>\n<h3><font color=\"#3AC1EF\">\u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u0432 v86<\/font><\/h3>\n<p>  \u041c\u043d\u0435 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c GDB \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 v86. \u041f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0432\u044b\u0434\u0430\u044e\u0442 <code>segfault<\/code>. \u0421\u043c\u0435\u043d\u0430 \u043d\u0430\u0431\u043e\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 uClibc \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 Buildroot \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c GDB, \u043d\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u044d\u0442\u043e \u043d\u0435 \u0440\u0435\u0448\u0430\u0435\u0442, \u0430 \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441 11.2 \u043d\u0430 10.2 \u0438\u043b\u0438 8 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442. \u0412 QEMU \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u0435\u043b\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432 v86. \u0411\u044b\u043b\u043e \u0431\u044b \u0437\u0434\u043e\u0440\u043e\u0432\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b GDB \u0441\u043e\u043e\u0431\u0449\u0430\u043b, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u0430\u043b\u043e \u0441\u0431\u043e\u0439 \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438, \u043d\u043e \u043f\u043e\u043a\u0430 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u0421\u0438.<\/p>\n<h2><font color=\"#3AC1EF\">\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u0438<\/font><\/h2>\n<p>  \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0439 \u043e\u0442 Buildroot, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c:<\/p>\n<pre><code class=\"bash\">make --directory buildroot legal-info<\/code><\/pre>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u043e\u043d\u0438 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 <i>buildroot\/output\/legal-info<\/i>. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0437\u0434\u0435\u0441\u044c, \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0432\u0430\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>  <a href=\"https:\/\/bit.ly\/3PT6wqs?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=Bright_Translate&amp;utm_content=linux_i_tinysc_v_brauzere\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/xb\/o4\/gm\/xbo4gmrlicdllfwrmtuypqrlcgg.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/xb\/o4\/gm\/xbo4gmrlicdllfwrmtuypqrlcgg.jpeg\" data-blurred=\"true\"\/><\/a><\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \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\/ruvds\/blog\/669196\/\"> https:\/\/habr.com\/ru\/company\/ruvds\/blog\/669196\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/669196\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gi\/xe\/jc\/gixejcdwdw7g525uce-w6lopzic.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gi\/xe\/jc\/gixejcdwdw7g525uce-w6lopzic.png\"\/><\/div>\n<p><\/a><br \/>  \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e <a href=\"http:\/\/Clang%20In%20Browser\">Clang in Browser<\/a> \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u0435\u0442, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0432\u0441\u0435 \u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0434\u0438\u0438. \u042f \u0436\u0435 \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0432 WASM \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u043f\u043e\u0439\u0442\u0438 \u0441\u0432\u043e\u0438\u043c \u0438\u0437\u043b\u044e\u0431\u043b\u0435\u043d\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c \u2013 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b. \u042d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0435 \u0442\u0430\u043a\u043e\u0439 \u0443\u0436 \u0431\u044b\u0441\u0442\u0440\u044b\u0439, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0432\u0438\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043d\u043e\u0439 JS-\u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0426\u041f\u0423, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0441\u0435 \u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0443\u0441\u0442\u0440\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0432\u0440\u043e\u0434\u0435 Tiny \u0421 Compiler \u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e Linux.<\/p>\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-333971","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/333971","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=333971"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/333971\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=333971"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=333971"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=333971"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}