From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com [IPv6:2a00:1450:4864:20::232]) by sourceware.org (Postfix) with ESMTPS id 815973858D28 for ; Thu, 7 Apr 2022 13:21:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 815973858D28 Received: by mail-lj1-x232.google.com with SMTP id bn33so7434708ljb.6 for ; Thu, 07 Apr 2022 06:21:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=m4NIYSPKNz8mh2u1/3C54DTyo7OxXu61OUOK8ymiFDA=; b=I7CYB7ZXMSRzDU2za9gJpM4TG8AxALcVruLSnEn7PwEidj8PVtaG6LJBthlK7Ky3po wv1/9elUptLvv4yN8xaeNBZm/AOVkN+eqO+U0ti+B4k98VQf/9lLU7c5vu3m9901fZO0 4gS47oWw35JFBwbTlxbd/UoSG580cTNj2ySUTjLwGX/t9TuDSYJQcGFYYDJSO3xQbhfS TCqhGfobsYeWZHdXL2icGqSjjPq9Isiwo2RJV5aR82CXJu0iH6w70AyiLb2TVK/NsDDG aNs0N/0PuTNrA/J3qMZvwb7hObuP6ht/Q6Fs6qFOoqjKMRL6fOO8lvGCFJe2/BTjwKV9 UNXA== X-Gm-Message-State: AOAM531/cchJ2s2Qg2nWzVuLPe2EZKXz6uACr/w6q76G88JZ+0wbFI+j ABRCP9cGd3EtvKaG3Qu+N4lEcNoNI1/eIkuaEQ== X-Google-Smtp-Source: ABdhPJxu7pFQohgKjhFpZpFAuR7KiZVsGLKl182idBzZZuoZt9GrNQJZIAC5RiC7UpgYy3mtBjxVO08gJpJZDB7lCv0= X-Received: by 2002:a05:651c:994:b0:24a:fc47:d6ca with SMTP id b20-20020a05651c099400b0024afc47d6camr8572449ljq.297.1649337690166; Thu, 07 Apr 2022 06:21:30 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Yubin Ruan Date: Thu, 7 Apr 2022 21:21:19 +0800 Message-ID: Subject: Re: libstdc++.so.0.29 contains undefined reference to libiconv To: Jonathan Wakely Cc: "libstdc++" Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libstdc++@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++ mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Apr 2022 13:21:43 -0000 On Thu, Apr 7, 2022 at 5:02 PM Jonathan Wakely wrote: > > > > On Thu, 7 Apr 2022, 03:38 Yubin Ruan via Libstdc++, wrote: >> >> Hi, >> >> I compile GCC 11.2 and get a libstdc++.so.6.0.29 (installed in >> "/usr/local/mygcc/lib64/") but this shared lib contains undefined >> reference to libiconv_*. >> >> When I compile a hello world program using gcc11.2, I get the following error: >> >> > /usr/local/mygcc/bin/g++ -Wall -std=c++17 hw.cc -o hw >> /usr/local/mygcc/bin/../lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../lib64/libstdc++.so: >> undefined reference to `libiconv' >> /usr/local/mygcc/bin/../lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../lib64/libstdc++.so: >> undefined reference to `libiconv_close' >> /usr/local/mygcc/bin/../lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../lib64/libstdc++.so: >> undefined reference to `libiconv_open' >> collect2: error: ld returned 1 exit status >> >> Adding a "-liconv" flag will help this program compile. >> >> From ldd's output, the libstdc++.so does not has any dynamic reference >> to libiconv; >> >> > ldd /usr/local/mygcc/lib64/libstdc++.so.6.0.29 >> linux-vdso.so.1 => (0x00007ffce1fea000) >> libm.so.6 => /lib64/libm.so.6 (0x00007fefc74b8000) >> libc.so.6 => /lib64/libc.so.6 (0x00007fefc70e9000) >> /lib64/ld-linux-x86-64.so.2 (0x00007fefc7bd1000) >> libgcc_s.so.1 => >> /usr/local/$INSTALL_PREFX/lib64/libgcc_s.so.1 (0x00007fefc6ed1000) >> >> But from nm 's output, there are indeed undefined reference to libiconv* >> >> > nm -D /usr/local/mygcc/lib64/libstdc++.so.6.0.29 |grep -i iconv >> U libiconv >> U libiconv_close >> U libiconv_open >> >> I already have libiconv installed under /usr/local when compiling >> GCC11.2, but this does not seems to help; > > > It doesn't help because that is the cause of the problem. > > Glibc defines the iconv routines that libstdc++ needs, and so you should not use libiconv on Linux systems using Glibc. So remove all libiconv libs and headers, and recompile GCC will be fine? Does it require any more configuration? How do I make sure that the configuration is correct? >> And by the way, libiconv seems to only provide dynamic lib; there is >> no libiconv.a; >> >> >> Previously I have GCC10.2 compiled & installed. The libstdc++.so.0.28 >> also contains undefined ref to libiconv* >> >> > nm -D /usr/local/mygcc/lib64/libstdc++.so.6.0.28 |grep -i iconv >> U libiconv >> U libiconv_close >> U libiconv_open >> >> but compiling with libstdc++.so.6.0.28 does NOT require "-liconv". >> >> So, is there anything that I missed when compiling GCC11.2 which can >> remove unnecessary dependency of libiconv ? >> >> Thanks, >> Yubin