From owner-freebsd-current@FreeBSD.ORG Wed Mar 20 19:49:56 2013 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 19C16F4 for ; Wed, 20 Mar 2013 19:49:56 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from tensor.andric.com (tensor.andric.com [IPv6:2001:7b8:3a7:1:2d0:b7ff:fea0:8c26]) by mx1.freebsd.org (Postfix) with ESMTP id D6F7BF6 for ; Wed, 20 Mar 2013 19:49:55 +0000 (UTC) Received: from [IPv6:2001:7b8:3a7::71ee:ef04:1f42:971d] (unknown [IPv6:2001:7b8:3a7:0:71ee:ef04:1f42:971d]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id DD3005C5B; Wed, 20 Mar 2013 20:49:53 +0100 (CET) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 6.3 \(1503\)) Subject: Re: net/xmlrpc-c-devel port with GCC 4.8 From: Dimitry Andric In-Reply-To: <514A05FB.7020608@gmail.com> Date: Wed, 20 Mar 2013 20:49:51 +0100 Content-Transfer-Encoding: quoted-printable Message-Id: <45FF4CDD-66C2-4AA5-8A8D-B39677A4D6B1@FreeBSD.org> References: <514A05FB.7020608@gmail.com> To: deeptech71 X-Mailer: Apple Mail (2.1503) Cc: freebsd-current@freebsd.org X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Mar 2013 19:49:56 -0000 On Mar 20, 2013, at 19:54, deeptech71 wrote: > /usr/local/lib/gcc48/include/c++/bits/locale_facets.h:869: undefined = reference to `std::ctype::_M_widen_init() const' > [...] > /usr/local/lib/gcc48/include/c++/bits/stl_list.h:1550: undefined = reference to = `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'= > [...] >=20 > I worked around this by adding "/usr/local/lib/gcc48/libstdc++.so" to = the make-rule. Weird. Why does this work? Should it? The link step is erroneously pulling in /usr/lib/libstdc++.so by default. Since that is an older version of libstdc++, it does not contain the symbols you listed. As you saw, forcing the link stage to use gcc 4.8's version of libstdc++ at least produces an executable. However, there is very likely still a problem at runtime, because the resulting executable probably does not have the correct rpath entry. This is a general problem with the gcc ports: they should all pull in their own version(s) of libstdc++.so instead of using the default linker path. And possibly add rpath entries, to make sure the correct version of libstdc++.so is used at runtime.