{"id":1615,"date":"2023-03-25T23:23:17","date_gmt":"2023-03-25T22:23:17","guid":{"rendered":"https:\/\/alessandromasciadri.com\/?p=1615"},"modified":"2023-03-25T23:24:26","modified_gmt":"2023-03-25T22:24:26","slug":"come-visualizzare-tutte-le-dipendenze-di-un-eseguibile-con-ldd","status":"publish","type":"post","link":"https:\/\/alessandromasciadri.com\/come-visualizzare-tutte-le-dipendenze-di-un-eseguibile-con-ldd\/","title":{"rendered":"Come visualizzare tutte le dipendenze di un eseguibile con ldd"},"content":{"rendered":"\t\t<div data-akihiro-type=\"ama-post\" data-akihiro-id=\"1615\" class=\"akihiro akihiro-1615\" data-akihiro-post-type=\"post\">\n\t\t\t\t<div class=\"akihiro-element akihiro-element-d2422df e-flex e-con-boxed e-con e-parent\" data-id=\"d2422df\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"akihiro-element akihiro-element-08aa68f akihiro-widget akihiro-widget-text-editor\" data-id=\"08aa68f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Lavorando su sistemi Linux based, si interagisce costantemente con file eseguibili sia da terminale che da GUI. Ogni eseguibile pu\u00f2 necessitare di librerie che sono file condivisi e riutilizzati da molteplici programmi. Su Windows queste hanno tipicamente estensione .dll, mentre in Linux sono solitamente file con estensione .o o .so.<\/p><p>Questa guida mostra come utilizzare la command line utility ldd per visualizzare l&#8217;elenco delle dipendenze di un eseguibile.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-9788e87 akihiro-widget akihiro-widget-heading\" data-id=\"9788e87\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h3 class=\"akihiro-heading-title akihiro-size-default\">What is ldd<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-1a0792f akihiro-widget akihiro-widget-text-editor\" data-id=\"1a0792f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ldd \u00e8 un potente tool a riga di comando che permette di visualizzare tutte le librerie da cui dipende l&#8217;eseguibile.<\/p><p>In Linux i file di libreria sono comunemente collocati nei percorsi \/lib o \/usr\/lib. Le librerie sono sostanzialmente dei pacchetti di codice che aiutano gli sviluppatori a salvare tempo richiamando funzioni preconfezionate e sgravandoli cos\u00ec dal dover &#8220;reinventare la ruota&#8221; ad ogni sviluppo.<\/p><p>Ci sono due tipi di librerie:<\/p><ul><li>Librerie statiche (Static libraries)<\/li><li>Librerie dinamiche (Dynamic or Shared libraries)<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-57aab66 akihiro-widget akihiro-widget-heading\" data-id=\"57aab66\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h3 class=\"akihiro-heading-title akihiro-size-default\">Come installare ldd<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-6f0ebfb akihiro-widget akihiro-widget-text-editor\" data-id=\"6f0ebfb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Generalmente ldd \u00e8 disponibile preinstallato in quasi tutte le distribuzioni Linux, ma nel caso non dovesse esserlo, si pu\u00f2 procedere all&#8217;installazione con questo comando<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-c21ebdc akihiro-widget akihiro-widget-code-highlight\" data-id=\"c21ebdc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash \">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>apt install libc-bin<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-65e875c akihiro-widget akihiro-widget-heading\" data-id=\"65e875c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h3 class=\"akihiro-heading-title akihiro-size-default\">Sintassi di base di ldd<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-53d9c3a akihiro-widget akihiro-widget-text-editor\" data-id=\"53d9c3a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>La sintassi generale per il comando ldd \u00e8 piuttosto semplice. Di default l&#8217;esecuzione del comando mostra in output l&#8217;elenco delle dipendenze<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-1afd03a akihiro-widget akihiro-widget-code-highlight\" data-id=\"1afd03a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash \">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>ldd [options] executable<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-d7fbb28 akihiro-widget akihiro-widget-text-editor\" data-id=\"d7fbb28\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Per esempio per mostrare le dipendenze del binario bash, il comando \u00e8 il seguente<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-5476c8e akihiro-widget akihiro-widget-code-highlight\" data-id=\"5476c8e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash \">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>ldd \/bin\/bash<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-6273e70 akihiro-widget akihiro-widget-heading\" data-id=\"6273e70\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h3 class=\"akihiro-heading-title akihiro-size-default\">Options del comando ldd<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-0394114 akihiro-widget akihiro-widget-text-editor\" data-id=\"0394114\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Per modificare il comportamento del comando possiamo utilizzare le seguenti opzioni:<\/p><ul><li>-v &#8211; Verbose mode, che stampa tutte le informazioni<\/li><li>-u &#8211; Mostra le dipendenze dirette inutilizzate<\/li><li>-d &#8211; Esegue una data relocation e mostra gli ELF mancanti<\/li><li>-r &#8211; Esegue una data and function relocation e mostra gli ELF e le funzioni mancanti<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Lavorando su sistemi Linux based, si interagisce costantemente con file eseguibili sia da terminale che da GUI. Ogni eseguibile pu\u00f2 necessitare di librerie che sono file condivisi e riutilizzati da molteplici programmi. Su Windows queste hanno tipicamente estensione .dll, mentre in Linux sono solitamente file con estensione .o o .so. Questa guida mostra come utilizzare [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[20,19],"class_list":["post-1615","post","type-post","status-publish","format-standard","hentry","category-sistemistica","tag-linux","tag-ubuntu"],"_links":{"self":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts\/1615","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/comments?post=1615"}],"version-history":[{"count":4,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts\/1615\/revisions"}],"predecessor-version":[{"id":1619,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts\/1615\/revisions\/1619"}],"wp:attachment":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/media?parent=1615"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/categories?post=1615"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/tags?post=1615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}