{"id":1645,"date":"2015-07-29T22:25:07","date_gmt":"2015-07-29T22:25:07","guid":{"rendered":"http:\/\/blog.rastersoft.com\/?p=1645"},"modified":"2015-07-29T22:25:07","modified_gmt":"2015-07-29T22:25:07","slug":"no-puede-caber-aqui","status":"publish","type":"post","link":"https:\/\/blog.rastersoft.com\/?p=1645","title":{"rendered":"No puede caber aqui"},"content":{"rendered":"<p>Llevo un par de d\u00edas incapaz de actualizar el paquete binutils usando la emulaci\u00f3n de mipsel sobre mi PC. Es una cosa misteriosa, pues daba un error al compilar el linker\u00a0<em>gold<\/em>. Tras intentar hacerlo\u00a0<em>a mano<\/em>, me devolvi\u00f3 como mensaje de error:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">(for i in `seq 1 70000`; do \n  echo \"int var_$i __attribute__((section(\"section_$i\"))) = $i;\"; \ndone) &gt; many_sections_define.h.tmp\nmake: execvp: \/bin\/sh: Argument list too long<\/pre>\n<\/div>\n<p><em>\u00bfArgument list too long?<\/em> Un error bastante extra\u00f1o, sin duda. Y m\u00e1s en el propio <em>make<\/em>. Encima, si eliminaba todo ese c\u00f3digo y met\u00eda un simple <em>echo<\/em>, el error persist\u00eda. \u00bfQu\u00e9 estaba pasando?<\/p>\n<p>Tras probar de todo y rebuscar por todas partes, por fin encontr\u00e9 el problema: <a href=\"https:\/\/blogs.gentoo.org\/calchan\/2015\/04\/23\/the-answer-to-the-ultimate-question-of-qemu-chroots-argument-pages-and-binutils\/\" target=\"_blank\">qemu define un tama\u00f1o m\u00e1ximo para la l\u00ednea de comandos (MAX_ARG_PAGES) demasiado peque\u00f1o para compilar binutils<\/a>, y por eso casca. Encima, dicho valor se define <em>a pi\u00f1\u00f3n<\/em> en el c\u00f3digo fuente, por lo que la \u00fanica soluci\u00f3n consiste en <a href=\"http:\/\/wiki.qemu.org\/Download\" target=\"_blank\">bajarse los fuentes de <em>qemu<\/em><\/a>, modificar el fichero <em>linux-user\/qemu.h <\/em> para aumentar a 64 o m\u00e1s las p\u00e1ginas reservadas para la l\u00ednea de comandos (yo puse 129), y compilarlo todo con:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">.\/configure --static --target-list=mipsel-linux-user\nmake<\/pre>\n<\/div>\n<p>Con esto ya tendremos en <em>mipsel-linux-user\/qemu-mipsel<\/em> el ejecutable est\u00e1tico, el cual podemos copiar dentro de la carpeta\u00a0de nuestra m\u00e1quina virtual como <em>usr\/bin\/qemu-mipsel-static. <\/em>Y con esto deber\u00edamos ser capaces de compilar cualquier cosa.<\/p>\n<p>(Si, el t\u00edtulo es por <a href=\"https:\/\/www.youtube.com\/watch?v=eIwJ4TnzyZo\" target=\"_blank\">esta escena<\/a> \ud83d\ude42 )<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Llevo un par de d\u00edas incapaz de actualizar el paquete binutils usando la emulaci\u00f3n de mipsel sobre mi PC. Es una cosa misteriosa, pues daba un error al compilar el linker\u00a0gold. Tras intentar hacerlo\u00a0a mano, me devolvi\u00f3 como mensaje de error: (for i in `seq 1 70000`; do echo \u00abint var_$i __attribute__((section(\u00absection_$i\u00bb))) = $i;\u00bb; done) &hellip; <a href=\"https:\/\/blog.rastersoft.com\/?p=1645\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">No puede caber aqui<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,6],"tags":[],"class_list":["post-1645","post","type-post","status-publish","format-standard","hentry","category-cacharreo","category-trucos"],"_links":{"self":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/1645","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1645"}],"version-history":[{"count":1,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/1645\/revisions"}],"predecessor-version":[{"id":1918,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/1645\/revisions\/1918"}],"wp:attachment":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1645"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1645"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1645"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}