digitalmars.D - Re: ld issues again
- Brian Myers (18/18) May 15 2011 Hello all,
- Jonathan M Davis (22/50) May 15 2011 dmd.conf specifically puts both the 32 and 64-bit lib directories on its...
- Daniel Gibson (8/35) May 15 2011 What Version of Ubuntu are you using (10.10 (maverick), 11.04(natty), .....
Hello all, Thanx for the assistance rendered before. I've removed all my previous installation attempt and installed D 2.0 under Ubuntu with the one click installer. Now when compiling I get the following, which is different from what I was getting before: /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib32/libphobos2.a(getopt_714_340.o): `_D3std6getopt10optionCharw' accessed both as normal and thread local symbol /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib32/libphobos2.a: could not read symbols: Success collect2: ld returned 1 exit status --errorlevel 1 I edited my dmd.conf because it seems to be trying to find libphobos2.a in the lib32 directory, and I think it needs to find it in the lib64 directory. Don't know what the getopt error is about. Here is my dmd.conf: [Environment] DFLAGS= -I/usr/include/d/dmd/phobos -I/usr/include/d/dmd/druntime/import -L-L/usr/lib64 -L- L/usr/lib32 -L--no-warn-search-mismatch -L--export-dynamic -L-lrt Should I change the -L-L to just /usr/lib since that's linked to /usr/lib64? Thanx again Brian
May 15 2011
On 2011-05-15 22:39, Brian Myers wrote:Hello all, Thanx for the assistance rendered before. I've removed all my previous installation attempt and installed D 2.0 under Ubuntu with the one click installer. Now when compiling I get the following, which is different from what I was getting before: /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib32/libphobos2.a(getopt_ 714_340.o): `_D3std6getopt10optionCharw' accessed both as normal and thread local symbol /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib32/libphobos2.a: could not read symbols: Success collect2: ld returned 1 exit status --errorlevel 1 I edited my dmd.conf because it seems to be trying to find libphobos2.a in the lib32 directory, and I think it needs to find it in the lib64 directory. Don't know what the getopt error is about. Here is my dmd.conf: [Environment] DFLAGS= -I/usr/include/d/dmd/phobos -I/usr/include/d/dmd/druntime/import -L-L/usr/lib64 -L- L/usr/lib32 -L--no-warn-search-mismatch -L--export-dynamic -L-lrt Should I change the -L-L to just /usr/lib since that's linked to /usr/lib64?dmd.conf specifically puts both the 32 and 64-bit lib directories on its path so that it can build for both 32 and 64-bit. And if /usr/lib is a symlink to /usr/lib64, then it doesn't matter which of the two is on your path. They're the same. Since ld is grabbing libphobos2.a from lib32, dmd obviously thinks that you're building a 32-bit executable. Now, if you've installed dmd as a 64-bit executable, that's a bit odd, since it should default to building 64- bit executables. That would seem to indicate that you're building with -m32 (or you installed 2.052 instead of 2.053, and 2.052 didn't have a 64-bit executable, and it defaulted to -m32). Regardless, ld is not complaining that lib32/libphobos2.a is not for the right architecture, so it definitely looks like you're trying to build a 32-bit executable. Now, why that isn't working, I don't know. It looks like something funny is going on with std.getopt. It could be that there's a problem with the libphobos2.a file which your program ran into and others haven't. Or it could just be that your libphobos2.a file is corrupted. In any case, the folders for both the lib32 and lib64 versions of libphobos2.a should be in your DFLAGS. dmd/ld will grab the correct version of libphobos2.a depending on whether you're building a 32 or 64-bit executable. So, that shouldn't be the problem. It sounds more like something is wrong with your libphobos2.a file. - Jonathan M Davis
May 15 2011
Am 16.05.2011 07:39, schrieb Brian Myers:Hello all, Thanx for the assistance rendered before. I've removed all my previous installation attempt and installed D 2.0 under Ubuntu with the one click installer. Now when compiling I get the following, which is different from what I was getting before: /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib32/libphobos2.a(getopt_714_340.o): `_D3std6getopt10optionCharw' accessed both as normal and thread local symbol /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib32/libphobos2.a: could not read symbols: Success collect2: ld returned 1 exit status --errorlevel 1 I edited my dmd.conf because it seems to be trying to find libphobos2.a in the lib32 directory, and I think it needs to find it in the lib64 directory. Don't know what the getopt error is about. Here is my dmd.conf: [Environment] DFLAGS= -I/usr/include/d/dmd/phobos -I/usr/include/d/dmd/druntime/import -L-L/usr/lib64 -L- L/usr/lib32 -L--no-warn-search-mismatch -L--export-dynamic -L-lrt Should I change the -L-L to just /usr/lib since that's linked to /usr/lib64? Thanx again BrianWhat Version of Ubuntu are you using (10.10 (maverick), 11.04(natty), ...)? The 32bit (i386) or 64bit (amd64) version of that distribution? What's the output of "uname -a"? What's the output of "ls -ld /usr/lib*"? Did you compile with -m32 or -m64 (if none of these try them)? Cheers, - Daniel
May 15 2011