From owner-freebsd-toolchain@freebsd.org Wed Dec 9 20:54:35 2015 Return-Path: Delivered-To: freebsd-toolchain@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B829D9D5673 for ; Wed, 9 Dec 2015 20:54:35 +0000 (UTC) (envelope-from wam@hiwaay.net) Received: from fly.hiwaay.net (fly.hiwaay.net [216.180.54.1]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8CBD21169 for ; Wed, 9 Dec 2015 20:54:35 +0000 (UTC) (envelope-from wam@hiwaay.net) Received: from kabini1.local (dynamic-216-186-213-32.knology.net [216.186.213.32] (may be forged)) (authenticated bits=0) by fly.hiwaay.net (8.13.8/8.13.8/fly) with ESMTP id tB9KsXJV027448 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Wed, 9 Dec 2015 14:54:34 -0600 Subject: Re: ongoing link issues References: <56685C44.10802@hiwaay.net> Cc: FreeBSD toolchain mailing list !!!! From: "William A. Mahaffey III" Message-ID: <56689509.1050802@hiwaay.net> Date: Wed, 9 Dec 2015 15:00:03 -0553.75 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-toolchain@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Maintenance of FreeBSD's integrated toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Dec 2015 20:54:35 -0000 On 12/09/15 12:03, Dimitry Andric wrote: > On 09 Dec 2015, at 17:50, William A. Mahaffey III wrote: >> I am still trying to statically link my inhouse code. I switched to using g++5 in the link line: > ... >> g++5 -o /usr/local/bin/PreBFCGL.opteron.TEST.static -Wl,-s,--allow-multiple-definition,-rpath=/usr/local/lib/gcc5 Main.o -L/home/wam/V8/Cnx/test/junk/cart/unstaggered/bfc/pre/../lib/R4/opteron -L/home/wam/lib/R4 -L/usr/lib64/openmotif -Wl,--start-group -lmaiPre -lPre -lPrecxx -lutils -lftndmp -lftnO2pre -lftnO2 -lBC_Phi -license -Wl,--end-group -lMemIO -lMotif -lStdHash -lmpi -ltet -lgomp -lMrm -lXm -lXt -lGL -lGLU -lGLw -lX11 -ljpeg -lpng -lz -lm -static-libgcc -static-libstdc++ -Bstatic -lgfortran -static-libgfortran && \rm -f Main.o >> [wam@kabini1, ~, 10:51:48am] 917 % PreBFCGL.TEST >> /lib/libgcc_s.so.1: version GCC_4.6.0 required by /usr/local/lib/gcc48/libgfortran.so.3 not found >> [wam@kabini1, ~, 10:51:52am] 918 % PreBFCGL.TEST.static >> /lib/libgcc_s.so.1: version GCC_4.6.0 required by /usr/local/lib/gcc48/libgfortran.so.3 not found >> [wam@kabini1, ~, 10:52:02am] 919 % PreBFCGL.bdver1.TEST.static >> /lib/libgcc_s.so.1: version GCC_4.6.0 required by /usr/local/lib/gcc48/libgfortran.so.3 not found >> [wam@kabini1, ~, 10:52:04am] 920 % uname -a > Instead of all the complicated stuff above, can't you simply use -static > while linking? I'm not sure why you want a half-dynamic, half-static > executable? > > If you want to link *some* of the libraries statically, you must enclose > these in a -Wl,-Bstatic ... -Wl,-Bdynamic pair. For example: > > -Wl,-Bstatic -lstdc++ -lgfortran -lgcc -Wl,-Bdynamic > > Also, you should probably link using gcc5 instead of g++5, otherwise the > latter might add its own -lstdc++ arguments. > > -Dimitry I went ahead & tried the -Wl,-Bstatic & -Wl,-Bdynamic (I show output from successful dynamic link & problematic static link for comparison): . . . chmod: /usr/local/bin/PreBFCGL.opteron.TEST.R8: No such file or directory *** [/usr/local/bin/PreBFCGL.opteron.TEST.R8] Error code 1 (ignored) ar xv /home/wam/V8/Cnx/test/junk/cart/unstaggered/bfc/pre/../lib/R8/opteron/libmaiPre.a Main.o x - Main.o g++5 -o /usr/local/bin/PreBFCGL.opteron.TEST.R8 -Wl,-s,--allow-multiple-definition,-rpath=/usr/local/lib/gcc5 Main.o -L/home/wam/V8/Cnx/test/junk/cart/unstaggered/bfc /pre/../lib/R8/opteron -L/home/wam/lib/R8 -L/usr/lib64/openmotif -L/home/wam/V8/Cnx/test/junk/cart/unstaggered/bfc/pre/../lib/R4/opteron -L/home/wam/lib/R4 -L/usr/l ib64/openmotif -Wl,--start-group -lmaiPre -lPre -lPrecxx -lutils -lftndmp -lftnO2pre -lftnO2 -lBC_Phi -license -Wl,--end-group -lMemIO -lMotif -lStdHash -lgfortran -l gomp -lgcc -lmpi -ltet -lMrm -lXm -lXt -lGL -lGLU -lGLw -lX11 -ljpeg -lpng -lz -lm && \rm -f Main.o chmod -fv go+rx,a-w /usr/local/bin/PreBFCGL.opteron.TEST.R8 /usr/local/bin/PreBFCGL.opteron.TEST.R8 Done with /usr/local/bin/PreBFCGL.opteron.TEST.R8. MakePRE: Everything usual up to Date. Everything MemLibs up to date. Everything HashLibs up to date. Everything DumpLibs up to date. Everything BCLibs up to date. Everything allLibs up to date. chmod: /usr/local/bin/PreBFCGL.opteron.TEST.static: No such file or directory *** [/usr/local/bin/PreBFCGL.opteron.TEST.static] Error code 1 (ignored) ar xv /home/wam/V8/Cnx/test/junk/cart/unstaggered/bfc/pre/../lib/R4/opteron/libmaiPre.a Main.o x - Main.o g++5 -o /usr/local/bin/PreBFCGL.opteron.TEST.static -Wl,-s,--allow-multiple-definition,-rpath=/usr/local/lib/gcc5 Main.o -L/home/wam/V8/Cnx/test/junk/cart/unstaggered /bfc/pre/../lib/R4/opteron -L/home/wam/lib/R4 -L/usr/lib64/openmotif -Wl,--start-group -lmaiPre -lPre -lPrecxx -lutils -lftndmp -lftnO2pre -lftnO2 -lBC_Phi -license -Wl,--end-group -lMemIO -lMotif -lStdHash -static-libstdc++ -Wl,-Bstatic -lgfortran -lgomp -lgcc -Wl,-Bdynamic -lmpi -ltet -lMrm -lXm -lXt -lGL -lGLU -lGLw -lX11 -ljp eg -lpng -lz -lm && \rm -f Main.o /usr/local/lib/gcc5/gcc/x86_64-portbld-freebsd9.3/5.2.1/../../../libgfortran.a(write.o): In function `write_float': /usr/ports/lang/gcc5-devel/work/build/x86_64-portbld-freebsd9.3/libgfortran/../.././../gcc-5-20151124/libgfortran/io/write_float.def:1306: undefined reference to `sig nbitq' /usr/ports/lang/gcc5-devel/work/build/x86_64-portbld-freebsd9.3/libgfortran/../.././../gcc-5-20151124/libgfortran/io/write_float.def:1306: undefined reference to `fin iteq' /usr/local/lib/gcc5/gcc/x86_64-portbld-freebsd9.3/5.2.1/../../../libgfortran.a(write.o): In function `determine_en_precision': /usr/ports/lang/gcc5-devel/work/build/x86_64-portbld-freebsd9.3/libgfortran/../.././../gcc-5-20151124/libgfortran/io/write_float.def:1213: undefined reference to `fin iteq' /usr/local/lib/gcc5/gcc/x86_64-portbld-freebsd9.3/5.2.1/../../../libgfortran.a(write.o): In function `write_float': /usr/ports/lang/gcc5-devel/work/build/x86_64-portbld-freebsd9.3/libgfortran/../.././../gcc-5-20151124/libgfortran/io/write_float.def:1306: undefined reference to `isn anq' collect2: error: ld returned 1 exit status 1 error *** [/usr/local/bin/PreBFCGL.opteron.TEST.static] Error code 1 (continuing) . . . I reordered the linking of C++, FORTRAN & C libraries, since the unresolved symbols looked suspiciously similar to analagous ANSI C functions, but no go .... I also tried the -lgfortran twice, same problem. *Any* more ideas appreciated. TIA & have a good one. -- William A. Mahaffey III ---------------------------------------------------------------------- "The M1 Garand is without doubt the finest implement of war ever devised by man." -- Gen. George S. Patton Jr.